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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

譯者李洪柱?????校對(duì):方騰飛

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

-XX:+PrintFlagsFinal and -XX:+PrintFlagsInitial

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

$ 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}

(校對(duì)注:你可以嘗試在命令行輸入上面的命令,親自實(shí)現(xiàn)下)

表格的每一行包括五列,來(lái)表示一個(gè)XX參數(shù)。第一列表示參數(shù)的數(shù)據(jù)類型,第二列是名稱,第四列為值,第五列是參數(shù)的類別。第三列”=”表示第四列是參數(shù)的默認(rèn)值,而”:=” 表明了參數(shù)被用戶或者JVM賦值了。

注意對(duì)于這個(gè)例子我只是用了Benchmark類,因?yàn)檫@個(gè)系列前面的章節(jié)也是用的這個(gè)類。甚至沒(méi)有一個(gè)主類的情況下你能得到相同的輸出,通過(guò)運(yùn)行java 帶另外的參數(shù) -version.現(xiàn)在讓我們檢查下 server VM提供了多少個(gè)參數(shù)。我們也能指定參數(shù)-XX:+UnlockExperimentalVMOptions?和-XX:+UnlockDiagnosticVMOptions ;來(lái)解鎖任何額外的隱藏參數(shù)。

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

724個(gè)參數(shù),讓我們看一眼那些已經(jīng)被賦值的參數(shù)。

$ 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}

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

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

然而,注意當(dāng)與-XX:+PrintFlagsFinal 對(duì)比的時(shí)候,一些參數(shù)會(huì)丟失,大概因?yàn)檫@些參數(shù)是動(dòng)態(tài)創(chuàng)建的。

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

-XX:+PrintCommandLineFlags

讓我們看下另外一個(gè)參數(shù),事實(shí)上這個(gè)參數(shù)非常有用:?-XX:+PrintCommandLineFlags。這個(gè)參數(shù)讓JVM打印出那些已經(jīng)被用戶或者JVM設(shè)置過(guò)的詳細(xì)的XX參數(shù)的名稱和值。

換句話說(shuō),它列舉出?-XX:+PrintFlagsFinal的結(jié)果中第三列有":="的參數(shù)。以這種方式,我們可以用-XX:+PrintCommandLineFlags作為快捷方式來(lái)查看修改過(guò)的參數(shù)。看下面的例子。

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

現(xiàn)在如果我們每次啟動(dòng)java 程序的時(shí)候設(shè)置 -XX:+PrintCommandLineFlags 并且輸出到日志文件上,這樣會(huì)記錄下我們?cè)O(shè)置的JVM 參數(shù)對(duì)應(yīng)用程序性能的影響。類似于 -showversion(見(jiàn) Part1),我建議 –XX:+PrintCommandLineFlags 這個(gè)參數(shù)應(yīng)該總是設(shè)置在JVM啟動(dòng)的配置項(xiàng)里。因?yàn)槟銖牟恢滥闶裁磿r(shí)候會(huì)需要這些信息。

奇怪的是在這個(gè)例子中,通過(guò)?-XX:+PrintCommandLineFlags 列出堆的最大值會(huì)比通過(guò)-XX:+PrintFlagsFinal列舉出的相應(yīng)值小一點(diǎn)。如果誰(shuí)知道兩者之間不同的原因,請(qǐng)告訴我。

原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明:?轉(zhuǎn)載自并發(fā)編程網(wǎng) – ifeve.com本文鏈接地址:?JVM實(shí)用參數(shù)(三)打印所有XX參數(shù)及值

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。