-server 啟用-XX:+UseSerialGC-XX:+UseParNewGC,-XX:ParallelGCThreads=N-XX:MaxGCPauseMillis:最大停頓目標-XX:GCTimeRatio:吞吐量目標 (如 99 = 1% GC 時間)-XX:+UseAdaptiveSizePolicy:自適應調節新生代、Survivor、晉升年齡-XX:+UseParallelGC (Server 模式默認)-XX:+UseConcMarkSweepGC| 組合 | 新生代 | 年老代 | 特點 | 適用場景 |
|---|---|---|---|---|
| Serial + Serial Old | Serial | Serial Old | 單線程,簡單,Client 默認 | 小應用、桌面、開發測試 |
| Parallel Scavenge + Parallel Old | Parallel Scavenge | Parallel Old | 全並行,高吞吐,可控目標 | 批處理、數據分析、後台計算 |
| ParNew + CMS | ParNew | CMS (Serial Old 備用) | 低停頓,併發回收 | Web 應用、API 服務、實時系統 |
是否單核/小堆/開發測試? → UseSerialGC
否
是否批處理/高吞吐/停頓不敏感? → UseParallelGC
否
是否 Web/低延遲/響應時間敏感? → UseConcMarkSweepGC
否
大內存 (6G+) / 可接受 JDK 9+? → UseG1GC / UseZGC
CMSInitiatingOccupancyFraction=60-70,預留足夠空間給併發回收UseCMSCompactAtFullCollection=true + CMSFullGCsBeforeCompaction=5CMSParallelRemarkEnabled=true + CMSScavengeBeforeRemark=trueConcurrent Mode Failure,調大年老代或降低觸發閾值六大收集器無絕對優劣,只有場景適配。理解各收集器算法、線程模型、停頓特性、參數調節機制,是 JVM 調優核心技能。現代應用 (JDK 11+) 推薦優先評估 G1/ZGC,但掌握 CMS/Parallel 經典組合原理對診斷歷史系統、理解 GC 演進至關重要。