工作中常用的 JVM 配置參數有哪些?

Java 8 爲例

日誌

-XX:+PrintFlagsFinal,打印JVM所有參數的值
-XX:+PrintGC,打印GC信息
-XX:+PrintGCDetails,打印GC詳細信息
-XX:+PrintGCTimeStamps,打印GC的時間戳
-Xloggc:filename,設置GC log文件的位置
-XX:+PrintTenuringDistribution,查看熬過收集後剩餘對象的年齡分佈信息

內存設置

-Xms,設置堆的初始化內存大小
-Xmx,設置堆的最大內存
-Xmn,設置新生代內存大小
-Xss,設置線程棧大小
-XX:NewRatio,新生代與老年代比值
-XX:SurvivorRatio,新生代中Eden區與兩個Survivor區的比值,默認爲8,即Eden:Survivor:Survivor=8:1:1
-XX:MaxTenuringThreshold,從年輕代到老年代,最大晉升年齡。CMS 下默認爲 6,G1 下默認爲 15
-XX:MetaspaceSize,設置元空間的大小,第一次超過將觸發 GC
-XX:MaxMetaspaceSize,元空間最大值
-XX:MaxDirectMemorySize,用於設置直接內存的最大值,限制通過 DirectByteBuffer 申請的內存
-XX:ReservedCodeCacheSize,用於設置 JIT 編譯後的代碼存放區大小,如果觀察到這個值有限制,可以適當調大,一般夠用即可

設置垃圾收集相關

-XX:+UseSerialGC,設置串行收集器
-XX:+UseParallelGC,設置並行收集器
-XX:+UseConcMarkSweepGC,使用CMS收集器
-XX:ParallelGCThreads,設置Parallel GC的線程數
-XX:MaxGCPauseMillis,GC最大暫停時間 ms
-XX:+UseG1GC,使用G1垃圾收集器

CMS 垃圾回收器相關

-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction,與前者配合使用,指定MajorGC的發生時機
-XX:+ExplicitGCInvokesConcurrent,代碼調用 System.gc() 開始並行 FullGC,建議加上這個參數
-XX:+CMSScavengeBeforeRemark,表示開啓或關閉在 CMS 重新標記階段之前的清除(YGC)嘗試,它可以降低 remark 時間,建議加上
-XX:+ParallelRefProcEnabled,可以用來並行處理 Reference,以加快處理速度,縮短耗時

G1 垃圾回收器相關

-XX:MaxGCPauseMillis,用於設置目標停頓時間,G1 會盡力達成
-XX:G1HeapRegionSize,用於設置小堆區大小,建議保持默認
-XX:InitiatingHeapOccupancyPercent,表示當整個堆內存使用達到一定比例(默認是 45%),併發標記階段就會被啓動
-XX:ConcGCThreads,表示併發垃圾收集器使用的線程數量,默認值隨 JVM 運行的平臺不同而變動,不建議修改

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章