-xx: +PrintCompilation
-XX:-TieredCompilation
-XX:-BackgroundCompilation
-XX:+PrintInlining
-XX:+UnlockDiagnosticVMOptions
-XX:+LogCompilation -XX:LogFile=<your_file_path>
-XX:InitialCodeCaheSize=<SIZE>
-XX:ReservedCodeCacheSize=<SIZE>
設置方法計數器門閥值 -XX:CompileThreshold=10000
;java
關閉方法計算器的熱度衰減 -XX:-UseCounterDecay
緩存
設置半衰週期,單位是秒 -XX:CounterHalfLifeTime=20
安全
可間接調整回邊計數器的閾值 -XX:OnStackReplacePercentage=100
併發
-XX:+DoEscapeAnalysis
-XX:+PrintEscapeAnalysis
XX:+EliminateAllocations
-XX:+EliminateLocks
-XX:+PrintEliminateAllocations
-XX:+PrintSafepointStatistics -XX:+PrintGCApplicationStoppedTime
-XX:+PrintSafepointStatistics -Xlog:safepoint
-XX:SoftRefLRUPolicyMSPerMB=3000
jvm
-XX:+PrintStringTableStatistics
-XX:StringTableSize=N
jdk 8的默認大小是756760jdk8使用g1 gc後,加上以上參數,能夠開啓字符串重排 -XX:+UseStringDeduplication高併發
-XX:+UseStringDeduplication
優化
-XX:AutoBoxCacheMax=N
自動拆裝箱緩存值大小設置 ,默認是-128到127spa
-XX:AutoBoxCacheMax=20000
改成最大值2萬線程
-XX:-UseBiasedLocking
-Xmx3000m
-Xms200m
-XX:newRatio=2
-XX:NewSize=800m
-XX:SurvivorRatio=8
direct memory,堆外內存是jvm內存的組成部分日誌
-XX:MaxDirectMemorySize=512M
-XX:NativeMemoryTracking=summary
jcmd <pid> VM.native_memory detail // 進行 baseline,以對比分配內存變化 jcmd <pid> VM.native_memory baseline // 進行 baseline,以對比分配內存變化 jcmd <pid> VM.native_memory detail.diff
設置初始code值 -XX:InitialCodeCacheSize=4095
設置code最大值 -XX:ReservedCodeCacheSize=18M
-XX:MaxMetaspaceSize=23m
-XX:MetaspaceSize=10M
-Xss2M
棧初始大小-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintReferenceGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
打印GC時間戳
-XX:PrintReferenceGC
打印引用gc日誌
-XX:+UseSerialGC
-XX:UseParNewGC -XX:UseConcMarkSweepGC
-XX:UserParallelGC
-XX:MaxGCPauseMillis=value //停頓value毫秒 -XX:GCTimeRatio=N //GC時間和用戶時間比例=1/(N+1),如設置49, 則爲1/(1+49)既2%的時間
開啓G1GC -XX:UseG1GC
設置region區域大小; -XX:G1HeapRegionSzie=<N>
, 例如 n=16
設置在mixedGc中老年代regin的比例 -XX:G1MixedGCLiveThresholdPercent
默認是85
混合垃圾收集期間,每次進入CSet的oldRegion的最大閾值;默認是java堆的10% -XX:G1OldCSetRegionThresholdPercent
自適應老年代併發標誌閥門值 -XX:+G1UseAdaptiveIHOP
每次old併發標記完,mixedGc執行的次數,默認是8 -XX:G1MixedGCCountTarget=8