欧美麻豆久久久久久中文_成年免费观看_男人天堂亚洲成人_中国一级片_动漫黄网站免费永久在线观看_国产精品自产av一区二区三区

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 軟件研發 > Java開發者應了解的5個命令行標志

Java開發者應了解的5個命令行標志

2016-09-09 14:51:12 | 來源:中培企業IT培訓網

Java可以說是目前最流行的開發語言,尤其是在移動互聯網軟件開發方面當中的廣泛應用,更大大加快了其行業的發展前景。

中培偉業《高級Java開發最佳實踐》培訓專家臧老師在這里向大家介紹了五個命令行標志,臧老師表示,了解這個命令行標志,能夠對Java開發工作帶來極大的幫助。以下是這個命令行標志的詳細介紹:

1.DisableExplicitGC

我已記不清有多少次用戶要求我就應用程序性能問題提供咨詢了,其實只要跨代碼快速運行grep,就會發現清單所示的問題—原始Java性能反模式:

清單 1. System.gc(); // We just released a bunch of objects, so tell the stupid // garbage collector to collect them already!

顯式垃圾收集是一個非常糟糕的主意——就像將您和一個瘋狂的斗牛犬鎖在一個電話亭里。盡管調用的語法是依賴實現的,但如果您的JVM正在運行一個分 代的垃圾回收器大多數是)System.gc();強迫VM執行一個堆的“全部清掃”,雖然有的沒有必要。全部清掃比一個常規GC操作要昂貴好幾個數量 級,這只是個簡單數學問題。

您可以不把我的話放在心上—Sun的工程師為這個特殊的人工錯誤提供一個JVM標志;-XX:+DisableExplicitGC標志自動將System.gc()調用轉換成一個空操作,為您提供運行代碼的機會,您自己看看System.gc()對于整個JVM執行有害還是有利。

2.HeapDumpOnOutOfMemoryError

您有沒有經歷過這樣的情況:JVM不能使用,不斷拋出OutOfMemoryError,而您又不能為自己創建調試器來捕獲它或查看出現了什么問題?像這類偶發和或不確定的問題,通常使開發人員發瘋。

買者自負

并不是任何VM都支持所有命令行標志,Sun/OracleVM除外。查明一個標志是否被支持的最好方法是試用它,看它是否正常工作。倘若這些標志在技術上是不支持的,那么,使用它們您要承擔全部責任。如果這些標志中的任何一個使您的代碼、您的數據、您的服務器或您的一切消失得無影無蹤,我、Sun/OracleIBM都將不負責任。為以防萬一,建議先在虛擬非常生產環境中實驗。

在這個時刻您想要的是,在JVM消亡之際捕獲堆的一個快照——正好-XX:+HeapDumpOnOutOfMemoryError命令可以完成這一操作。

運行該命令通知JVM拍攝一個“堆轉儲快照”,并將其保存在一個文件中以便處理,通常使用jhat實用工具我在上一篇文章中介紹過。您可以使用 相應的-XX:HeapDumpPath標志指定到保存文件的實際路徑。不管文件保存在哪,務必確保文件系統和Java流程必須要有權限配置,可以 在其中寫入。

3.bootclasspath

定期將一個類放入類路徑是很有幫助的,這類路徑與庫存JRE附帶的類路徑或者以某種方式擴展的JRE類路徑略有不同。Java Crypto API提供商就是一個例子。如果您想要擴展JRE,那么您定制的實現必須可以使用引導程序ClassLoader,該引導程序可以加載rt.jar中的 java.lang.Object及其所有相關文件。

盡管您可以非法打開rt.jar并將您的定制實現或新數據包移入其中,但從技術上您就違反了您下載JDK時同意的協議了。

相反,使用JVM自己的-Xbootclasspath選項,以及皮膚-Xbootclasspath/p-Xbootclasspath/a

-Xbootclasspath使您可以設置完整的引導類路徑這通常包括一個對rt.jar的引用,以及一些其他JDK附帶的不是 rt.jar的一部分)JAR文件。-Xbootclasspath/p將值前置到現有bootclasspath中,并將 -Xbootclasspath/a附加到其中。

例如,如果您修改了庫中的java.lang.Integer,并將修改放在一個子路徑mods下,那么-Xbootclasspath/amods參數將新Integer放在默認的參數前面。

4.verbose

對于虛擬的或任何類型的Java應用程序,-verbose是一個很有用的一級診斷使用程序。該標志有三個子標志:gcclassjni

開發人員嘗試尋找是否 JVM 垃圾收集器發生故障或者導致性能低下,通常首先要做的就是執行 gc。不幸的是,解釋 gc 輸出很麻煩 — 足夠寫一本書。更糟糕的是,在命令行中打印的輸出在不同的 Java 版本中或者不在不同的 JVM 中會發生改變,這使得正確解釋變得更難。

一般來說,如果垃圾收集器是一個分代收集器(多數“企業級”VMs都是。某種虛擬標志將會出現,來指出一個全部清掃GC通路Sun JVM中,標志在GC輸出行的開始以“[FullGC...]”形式出現。

想要診斷ClassLoader或不匹配的類沖突,class可以幫上大忙。它不僅報告類何時加載,還報告類從何處加載,包括到JAR的路徑如果來自JAR)

jni很少使用,除了使用JNI或本地庫時。打開時,它將報告各種JNI事件,比如,本地庫何時加載,方法何時彈回再一次強調,在不同JVM版本中,輸出會發生變化。

5.Command-line-X

我列出了JVM中提供的我喜歡的命令行選項,但是還有一些更多的需要您自己發現,運行命令行參數-X,列出JVM提供的所有非標準但大部分都是安全的參數—例如:

-Xint,在解釋模式下運行JVM(對于測試JIT編譯器實際上是否對您的代碼起作用或者驗證是否JIT編譯器中有一個bug,這都很有用

-Xloggc:,和-verbose:gc做同樣的事,但是記錄一個文件而不輸出到命令行窗口。

JVM命令行選項時常發生變化,因此,定期查看是一個好主意。甚至,您深夜盯著監控器和下午點回家和妻子孩子吃頓晚飯,或者在Mass Effect 2中消滅您的敵人,根據您的喜好,它們都是不一樣的。

臧老師最后總結道,在生產環境中,命令行標志不是為永久使用而設計的——事實上,除了您終止用來調優JVM垃圾收集器的標志,沒有一個非標準命令行標記是專用于生產使用的。但是,作為工具來刺探在其他方面完全不透明的虛擬機的內部工作,是非常有價值的

標簽: Java開發
主站蜘蛛池模板: 黄在线观看网站 | 韩国精品一区二区无码视频 | 久久双人床双人片 | 天地资源在线观看高清 | 蜜桃传免费看片www 欧美黄色试片 | 99热精国产这里只有精品 | 性无码免费一区二区三区在线 | 免费人成在线观看播放a | 亚洲激情四射视频中文字幕久久 | 一本久道高清无码视频 | 男人把女人桶到爽免费应用 | 亚洲欧美91 | 国产成人AV综合亚洲色欲 | 99久久无码一区人妻a片 | 狠狠综合久久久久综合网址 | 超级碰碰色偷偷免费视频 | 亚洲国产第一站精品蜜芽 | 中文字幕中文字幕在线 | 色五月丁香五月综合五月亚洲 | 毛片在线播放网址 | 午夜老司机你懂的视频 | 国产熟妇疯狂4P交在线播放 | 国产午夜福利不卡在线观看 | 亚洲国产综合人成综合网站 | 猫咪av永久网址www大全 | 他一边曰一边吃我奶小说免看 | 少妇BBWBBW高潮 | 久久婷婷五月综合97色一本一本 | 久久WWW成人_看片免费不卡 | 女人与动zzz0000xxxx | 欧美日韩在线精品一区二区三区激情综合 | 强壮公弄得小薇高潮 | 一区二区三区精品视频免费播放 | 午夜成人鲁丝片午夜精品 | 白丝无内液液酱视频在线观看 | 欧美疯狂xxxxbbbb牲交 | m麻豆传媒| 四虎影视网址 | 中文字幕日韩精品一区二区三区 | 在线成人国产天堂精品av | 后入内射无码人妻一区 |