日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM实用参数(三)打印所有XX参数及值

發布時間:2024/1/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM实用参数(三)打印所有XX参数及值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:https://blog.codecentric.de/en/2012/07/useful-jvm-flags-part-3-printing-all-xx-flags-and-their-values/

譯者李洪柱?????校對:方騰飛

本篇文章基于Java?6update?21oder?21之后)版本,?HotSpot?JVM?提供給了兩個新的參數,在JVM啟動后,在命令行中可以輸出所有XX參數和值。

-XX:+PrintFlagsFinal and -XX:+PrintFlagsInitial

讓我們現在就了解一下新參數的輸出。以 -client 作為參數的 -XX:+PrintFlagsFinal? ?的結果是一個按字母排序的590個參數表格(注意,每個release版本參數的數量會不一樣)

$ java -client -XX:+PrintFlagsFinal Benchmark [Global flags] uintx AdaptivePermSizeWeight = 20 {product} uintx AdaptiveSizeDecrementScaleFactor = 4 {product} uintx AdaptiveSizeMajorGCDecayTimeScale = 10 {product} uintx AdaptiveSizePausePolicy = 0 {product}[...] uintx YoungGenerationSizeSupplementDecay = 8 {product} uintx YoungPLABSize = 4096 {product}bool ZeroTLAB = false {product}intx hashCode = 0 {product}

(校對注:你可以嘗試在命令行輸入上面的命令,親自實現下)

表格的每一行包括五列,來表示一個XX參數。第一列表示參數的數據類型,第二列是名稱,第四列為值,第五列是參數的類別。第三列”=”表示第四列是參數的默認值,而”:=” 表明了參數被用戶或者JVM賦值了。

注意對于這個例子我只是用了Benchmark類,因為這個系列前面的章節也是用的這個類。甚至沒有一個主類的情況下你能得到相同的輸出,通過運行java 帶另外的參數 -version.現在讓我們檢查下 server VM提供了多少個參數。我們也能指定參數-XX:+UnlockExperimentalVMOptions?和-XX:+UnlockDiagnosticVMOptions ;來解鎖任何額外的隱藏參數。

$ java -server -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal Benchmark

724個參數,讓我們看一眼那些已經被賦值的參數。

$ java -server -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal Benchmark | grep ":" uintx InitialHeapSize := 57505088 {product} uintx MaxHeapSize := 920649728 {product} uintx ParallelGCThreads := 4 {product}bool PrintFlagsFinal := true {product}bool UseParallelGC := true {product}

(校對注:這個命令非常有用)我們僅設置一個自己的參數 -XX:+PrintFlagsFinal。其他參數通過server VM基于系統設置的,以便以合適的堆大小和GC設置運行。

如果我們只想看下所有XX參數的默認值,能夠用一個相關的參數,-XX:+PrintFlagsInitial ?。 用?-XX:+PrintFlagsInitial, 只是展示了第三列為“=”的數據(也包括那些被設置其他值的參數)。

然而,注意當與-XX:+PrintFlagsFinal 對比的時候,一些參數會丟失,大概因為這些參數是動態創建的。

研究表格的內容是很有意思的,通過比較client和server VM的行為,很明顯了解哪些參數會影響其他的參數。有興趣的讀者,可以看一下這篇不錯文章Inspecting HotSpot JVM Options。這個文章主要解釋了第五列的參數類別。

-XX:+PrintCommandLineFlags

讓我們看下另外一個參數,事實上這個參數非常有用:?-XX:+PrintCommandLineFlags。這個參數讓JVM打印出那些已經被用戶或者JVM設置過的詳細的XX參數的名稱和值。

換句話說,它列舉出?-XX:+PrintFlagsFinal的結果中第三列有":="的參數。以這種方式,我們可以用-XX:+PrintCommandLineFlags作為快捷方式來查看修改過的參數。看下面的例子。

$ java -server -XX:+PrintCommandLineFlags Benchmark -XX:InitialHeapSize=57505088 -XX:MaxHeapSize=920081408 -XX:ParallelGCThreads=4 -XX:+PrintCommandLineFlags -XX:+UseParallelGC

現在如果我們每次啟動java 程序的時候設置 -XX:+PrintCommandLineFlags 并且輸出到日志文件上,這樣會記錄下我們設置的JVM 參數對應用程序性能的影響。類似于 -showversion(見 Part1),我建議 –XX:+PrintCommandLineFlags 這個參數應該總是設置在JVM啟動的配置項里。因為你從不知道你什么時候會需要這些信息。

奇怪的是在這個例子中,通過?-XX:+PrintCommandLineFlags 列出堆的最大值會比通過-XX:+PrintFlagsFinal列舉出的相應值小一點。如果誰知道兩者之間不同的原因,請告訴我。

原創文章,轉載請注明:?轉載自并發編程網 – ifeve.com本文鏈接地址:?JVM實用參數(三)打印所有XX參數及值

總結

以上是生活随笔為你收集整理的JVM实用参数(三)打印所有XX参数及值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。