更多 Java 虛擬機(jī)方面的文章椎瘟,請(qǐng)參見(jiàn)文集《Java 虛擬機(jī)》
打印參數(shù)值
-XX:+PrintFlagsFinal
[Global flags]
uintx AdaptiveSizeDecrementScaleFactor = 4 {product}
uintx AdaptiveSizeMajorGCDecayTimeScale = 10 {product}
uintx AdaptiveSizePausePolicy = 0 {product}
uintx AdaptiveSizePolicyCollectionCostMargin = 50 {product}
uintx AdaptiveSizePolicyInitializingSteps = 20 {product}
uintx AdaptiveSizePolicyOutputInterval = 0 {product}
uintx AdaptiveSizePolicyWeight = 10 {product}
uintx AdaptiveSizeThroughPutPolicy = 0 {product}
uintx AdaptiveTimeWeight = 25 {product}
bool AdjustConcurrency = false {product}
bool AggressiveOpts = false {product}
intx AliasLevel = 3 {C2 product}
bool AlignVector = true {C2 product}
intx AllocateInstancePrefetchLines = 1 {product}
......
......
......
取消偏向鎖
-XX:-UseBiasedLocking
JDK 1.6 默認(rèn)開(kāi)啟偏向鎖:嘗試把鎖給訪問(wèn)它的第一個(gè)線程覆致,取消 synchronized 原語(yǔ)。
- 在單線程模式下肺蔚,開(kāi)啟偏向鎖會(huì)提升性能煌妈,因?yàn)闊o(wú)需在進(jìn)行 synchronized 判斷。
- 在多線程模式下宣羊,JVM 就需要取消偏向鎖
設(shè)置 AutoBoxing 大小
默認(rèn) cache -128~127 之間的 int 和 long璧诵。
-XX:AutoBoxCacheMax=10000
Out of Memory 時(shí)打印 HeapDump
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=...
內(nèi)存大小
Heap 相關(guān):
-Xms512M -Xmx1024M
堆內(nèi)存的初始值及最大值
新生代相關(guān):
-Xmn128M
堆中 Young Generation 新生代內(nèi)存初始值
-XX:NewSize=128M
等同于 -Xmn128M
-XX:MaxNewSize=256M
堆中 Young Generation 新生代內(nèi)存最大值
新生代內(nèi)存過(guò)大,會(huì)降低 GC 的頻率仇冯,但是會(huì)增加每次 GC 時(shí) STW 的時(shí)間
永久代相關(guān):
-XX:PermSize=64M
堆中 Perm Generation 永久代內(nèi)存初始值
-XX:MaxPermSize=128M
堆中 Perm Generation 永久代內(nèi)存最大值
永久代存儲(chǔ)類的定義及常量池之宿,是一塊連續(xù)的堆空間,默認(rèn) 64M苛坚。
Java 8 取消了永久代比被,替換為 Metaspace色难,默認(rèn)128M:
-XX:MetaspaceSize=128M
Metaspace內(nèi)存初始值
-XX:MaxMetaspaceSize=256M
Metaspace內(nèi)存最大值
堆外相關(guān)/直接內(nèi)存,被 netty 等使用:
-XX:MaxDirectMemorySize=128M
堆外內(nèi)存最大值
GC 優(yōu)化
XX:+UseConcMarkSweepGC
啟用 CMS等缀,并行垃圾回收
XX:+PrintGCDetails
打印 GC 日志
XX:+PrintGCApplicationStoppedTime
打印 GC 的停頓時(shí)間
面向 GC 的編程
- 基于數(shù)組的集合指定初始化大小枷莉,例如 ArrayList, HashMap
- 對(duì)象不需要時(shí),將引用設(shè)置為 null
- 對(duì)象重用项滑,例如線程池
- 使用不可變對(duì)象