有關java併發能夠看這裏:
yuedu.baidu.com/ebook/d09e3…
Java 6(update 21oder 21以後)版本, HotSpot JVM 提供給了兩個新的參數,在JVM啓動後,在命令行中能夠輸出全部XX參數和值:javascript
-XX:+PrintFlagsFinal 以及 -XX:+PrintFlagsInitial
html
個人電腦上的Java版本是1.7.0_79,本文所講述的JVM參數所有都是這個版本有的(不一樣版本可能有所不一樣):java
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 的結果:git
其輸出有多是以下的狀況:github
$ 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模式追求最高的執行速度。oracle
每個參數各有五行,下面來每一行的參數有什麼意義:
表格的每一行包括五列,來表示一個XX參數。第一列表示參數的數據類型,第二列是名稱,第四列爲值,第五列是參數的類別。第三列」=」表示第四列是參數的默認值,:=表示這個值被人爲地修改過或者JVM經過人體工程學調優過。
uintX X位無符號整形,如uint32表示32位無符號整形 intX X位有符號整形,如int32表示32位有符號整形。第五個表示參數類別,product表示生產模式。diagnostic表示debug模式,能夠用來調試JVM。
manageable表示能夠經過JMX設置的參數,具體狀況能夠看這裏:Developing Manageable Applications With JMXapp
pd表示平臺依賴(Platform Dependent),某些參數可能只有某個操做系統纔有。jvm
參考連接:jsp
www.oracle.com/technetwork…
javadiscover.blogspot.hk/2013/10/hot…
pingtimeout.github.io/jvm-options…