亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java程序員必須知道的5個JVM命令行標志

2019-11-26 15:15:20
字體:
來源:轉載
供稿:網友

本文是Neward & Associates的總裁Ted Neward為developerworks獨家撰稿“你不知道5個……”系列中的一篇,JVM是多數開發人員視為理所當然的Java功能和性能背后的重負荷機器。然而,我們很少有人能理解JVM是如何進行工作的―像任務分配和垃圾收集、轉動線程、打開和關閉文件、中斷和/或JIT編譯Java字節碼,等等。

不熟悉JVM將不僅會影響應用程序性能,而且當JVM出問題時,嘗試修復也會很困難。

本文將介紹一些命令行標志,您可以使用它們來診斷和調優您的Java虛擬機性能。

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

清單 1. System.gc();

復制代碼 代碼如下:

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

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

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

2.HeapDumpOnOutOfMemoryError

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

買者自負

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

在這個時刻您想要的是,在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是一個很有用的一級診斷使用程序。該標志有三個子標志:gc、class和jni。

開發人員嘗試尋找是否 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命令行選項時常發生變化,因此,定期查看是一個好主意。甚至,您深夜盯著監控器和下午5點回家和妻子孩子吃頓晚飯,(或者在Mass Effect 2中消滅您的敵人,根據您的喜好),它們都是不一樣的。

結束語

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美最顶级丰满的aⅴ艳星| 亚洲qvod图片区电影| 亚洲最大av网| 精品久久久久久电影| 三级精品视频久久久久| 激情成人中文字幕| 久久久伊人欧美| 成人激情综合网| 中文字幕一区日韩电影| 亚洲国产美女久久久久| 久久99热这里只有精品国产| 国产精品日韩在线播放| 欧美日韩国产999| 欧美另类暴力丝袜| 4444欧美成人kkkk| 日本亚洲欧美三级| 国产一区二区丝袜高跟鞋图片| 国产精品视频一区国模私拍| 中文字幕国产精品| 精品亚洲国产成av人片传媒| 精品视频在线播放| 日韩精品免费在线观看| 亚洲午夜精品视频| 亚洲欧美国产精品va在线观看| 亚洲精品之草原avav久久| 久久久欧美一区二区| 国产精品国产自产拍高清av水多| 久久躁狠狠躁夜夜爽| 91精品国产色综合久久不卡98口| 日本精品视频在线观看| 国产精品一区二区三区久久| 日韩av大片在线| 91免费视频国产| 国产精品久久久久7777婷婷| 色先锋资源久久综合5566| 日韩在线观看成人| 永久免费毛片在线播放不卡| 日韩最新免费不卡| 国产精品av在线| 亚洲欧美日韩视频一区| 97香蕉久久夜色精品国产| 亚洲风情亚aⅴ在线发布| 欧美日韩国产精品一区二区三区四区| 欧美激情视频给我| 黑人与娇小精品av专区| 青草热久免费精品视频| 国产精品日韩一区| 亚洲成人激情视频| 美女撒尿一区二区三区| 亚洲精品电影网站| 国产精品女人久久久久久| 精品动漫一区二区| 欧美老妇交乱视频| 在线播放日韩av| 久久精品99久久久香蕉| 国产成人jvid在线播放| 高清欧美性猛交xxxx| 久久精品2019中文字幕| 欧美激情视频播放| 欧美午夜精品在线| 国产成人在线一区二区| 国产精品美女在线| 日韩精品免费观看| 日韩一区二区福利| 欧美日韩免费在线观看| 亚洲欧美一区二区激情| 国产精品久久久久久亚洲调教| 国产亚洲一区二区精品| 亚洲少妇中文在线| 2019中文字幕免费视频| 欧美视频在线免费看| 韩国美女主播一区| 91系列在线观看| 亚洲精品中文字幕有码专区| 91麻豆国产精品| 懂色av影视一区二区三区| 中文字幕一区日韩电影| 宅男66日本亚洲欧美视频| 亚洲欧美激情一区| 欧美性xxxx极品高清hd直播| 久精品免费视频| 日韩中文视频免费在线观看| 日韩av不卡电影| 欧美日韩日本国产| 久久伊人免费视频| 国产成人97精品免费看片| 日韩精品在线观看视频| 国产精品久久综合av爱欲tv| 综合激情国产一区| 青青草成人在线| 国产精品69av| 91天堂在线视频| 色无极影院亚洲| 亚洲欧洲黄色网| 国产精品激情av电影在线观看| 亚洲毛片一区二区| 欧美午夜精品久久久久久浪潮| 亚洲区中文字幕| 亚洲激情 国产| 亚洲欧美日韩一区二区在线| 亚洲精品美女免费| 亚洲欧美三级在线| 国产日韩欧美夫妻视频在线观看| 欧美第一淫aaasss性| 日韩性生活视频| 538国产精品一区二区免费视频| 亚洲а∨天堂久久精品喷水| 国产欧美日韩最新| 久久精品免费电影| 97国产在线观看| 亚洲欧美日本另类| 4438全国亚洲精品在线观看视频| 成人写真视频福利网| 欧美性猛交xxxx免费看久久久| 日本人成精品视频在线| 欧美日韩午夜激情| 国内揄拍国内精品少妇国语| 911国产网站尤物在线观看| 欧美成人精品一区二区三区| 国产精品美女久久久久av超清| 在线观看91久久久久久| 日韩精品在线播放| 久久中文精品视频| 久久伊人91精品综合网站| 国产精品久久久久久久9999| 国产精品igao视频| 91精品免费久久久久久久久| 亚洲免费视频网站| 2024亚洲男人天堂| 另类图片亚洲另类| 欧洲成人在线视频| 久久久免费观看| 粉嫩老牛aⅴ一区二区三区| 国产精品第七影院| 欧美亚洲成人xxx| 国产精品私拍pans大尺度在线| 在线国产精品视频| 久久久91精品国产| 亚洲国产精品久久久久秋霞不卡| 日韩在线视频二区| xxxxx成人.com| 久久影视电视剧免费网站| 一区二区三区www| 亚洲已满18点击进入在线看片| 久久青草精品视频免费观看| 97视频在线观看免费高清完整版在线观看| 精品国产福利在线| 欧美www视频在线观看| 国产日韩精品一区二区| 久久久久成人精品| 欧美成aaa人片在线观看蜜臀| 国内精品久久久久久久| 亚洲成人av在线| 在线观看日韩专区| 国产亚洲精品久久久久动| 超碰日本道色综合久久综合| 成人网页在线免费观看| 国产69精品久久久久99| 国产精品免费一区| 国产精品av网站| 91在线观看免费观看| 欧美一区三区三区高中清蜜桃| 91免费人成网站在线观看18| 亚洲黄页网在线观看|