-Xmn 或 -XX:NewRatio,降低 Minor GC 頻率-XX:CMSInitiatingOccupancyFraction=75(默認 92%),提前觸發避免 Full GC-XX:+UseParallelGC -XX:+UseParallelOldGC
關閉自適應,觀察穩定態日誌:
-XX:-UseAdaptiveSizePolicy -XX:+PrintAdaptiveSizePolicy
AdaptiveSizePolicy::update_averages: survived: 10464720 # 存活對象大小 (bytes) promoted: 1096456 # 晋升老年代大小 overflow: true # 是否溢出
-XX:SurvivorRatio(Eden:Survivor = Ratio:1:1)# 原配置 -Xmx1024m -Xms1024m -Xmn50m -XX:SurvivorRatio=3 # 算得:Eden=30M, Survivor=10M (各10M) # 觀察到最大 survived ≈ 18M,需 Survivor ≥ 20M # 保持 Eden 不變 (30M) → 新生代 = 30 + 20*2 = 70M # SurvivorRatio = Eden/Survivor = 30/20 = 1.5 # 堆總大小 = 老年代(974M) + 新生代(70M) = 1044M # 最終配置 -Xmx1044m -Xms1044m -Xmn70m -XX:SurvivorRatio=1.5
-XX:TargetSurvivorRatio=80 # 默認 50%,提高至 80% 利用空間
-XX:ParallelGCThreads=4 # 建議 ≤ CPU 邏輯核心數,避免 GC 線程搶佔業務 CPU
| 參數 | 作用 | 風險 |
|---|---|---|
-XX:+AggressiveOpts | 啟用實驗性優化 | 可能不穩定 |
-XX:+DoEscapeAnalysis | 逃逸分析:標量替換、棧上分配、鎖消除 | 極少 |
-XX:+UseBiasedLocking | 偏向鎖:無競爭時無鎖開銷 | 高競爭場景反而慢 |
-XX:+UseLargePages | 大頁面:減少 TLB miss | 需 OS 支援 (hugetlbfs) |
吞吐量調優本質是空間換時間:用更大內存換更少 GC,用更多 CPU 核心換更快並行收集。