目標:最短回收停頓,適合響應時間敏感型應用
算法:標記-清除
適用區:老年代
| 階段 | 名稱 | 線程狀態 | 耗時特徵 |
|---|---|---|---|
| 1 | 初始標記 | STW | 極短(僅標記 GC Roots 直達對象) |
| 2 | 併發標記 | 併發 | 長(GC Roots Tracing,與用戶線程並行) |
| 3 | 重新標記 | STW | 短(修正併發階段變動的標記) |
| 4 | 併發清除 | 併發 | 長(清理無用對象,與用戶線程並行) |

(CPU + 3) / 4 條收集線程-XX:ParallelGCThreads 限制線程數-XX:CMSInitiatingOccupancyFraction(默認 92%,JDK 6 後可調)-XX:+UseCMSCompactAtFullCollection(默認開啟):Full GC 時壓縮-XX:CMSFullGCsBeforeCompaction=N:每 N 次 CMS 觸發一次壓縮CMSInitiatingOccupancyFraction 避免 Promotion Failed