有關java併發可以看這裡:
yuedu.baidu.com/ebook/d09e3…
Java 6(update 21oder 21之後)版本, HotSpot JVM 提供給了兩個新的引數,在JVM啟動後,在命令列中可以輸出所有XX引數和值:
-XX:+PrintFlagsFinal 以及 -XX:+PrintFlagsInitial
我的電腦上的Java版本是1.7.0_79,本文所講述的JVM引數全部都是這個版本有的(不同版本可能有所不同):
bogon:~ xujianxing$ java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
bogon:~ xujianxing$複製程式碼
讓我們現在就瞭解一下新引數的輸出。以 -client 作為引數的 -XX:+PrintFlagsFinal 的結果:
其輸出有可能是如下的情況:
$ java -client -XX:+PrintFlagsFinal
[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複製程式碼
是一個按字母排序的669個參數列格。
而如果是按照-server的引數輸出,依然是669個引數。
client模式追求的是減小啟動速度和記憶體佔用,server模式追求最高的執行速度。
每一個引數各有五行,下面來每一行的引數有什麼意義:
表格的每一行包括五列,來表示一個XX引數。第一列表示引數的資料型別,第二列是名稱,第四列為值,第五列是引數的類別。第三列”=”表示第四列是引數的預設值,:=表示這個值被人為地修改過或者JVM通過人體工程學調優過。
uintX X位無符號整形,如uint32表示32位無符號整形 intX X位有符號整形,如int32表示32位有符號整形。第五個表示引數類別,product表示生產模式。diagnostic表示debug模式,可以用來除錯JVM。
manageable表示可以通過JMX設定的引數,具體情況可以看這裡:Developing Manageable Applications With JMX
pd表示平臺依賴(Platform Dependent),某些引數可能只有某個作業系統才有。
參考連結:
www.oracle.com/technetwork…
javadiscover.blogspot.hk/2013/10/hot…
pingtimeout.github.io/jvm-options…