当前位置:首页>排行榜>JVM 专题 02|GC 收集器怎么选?CMS/G1/ZGC

JVM 专题 02|GC 收集器怎么选?CMS/G1/ZGC

  • 更新时间 2026-10-20 09:06:54
JVM 专题 02|GC 收集器怎么选?CMS/G1/ZGC

JVM 专题 02|GC 收集器怎么选?CMS/G1/ZGC

垃圾回收器决定了停顿时间。面试问"用哪个",得看业务要吞吐还是低延迟。

一、评判维度

吞吐:单位时间干多少业务。

停顿(STW):回收时业务卡多久。低延迟场景(电商、交易)最在意这个。

二、CMS(老牌,已废弃)

并发标记清除,停顿短但碎片化严重、易 Concurrent Mode Failure 退化成全停顿。JDK9 起废弃。

三、G1(默认主流)

把堆切成很多 Region,优先回收垃圾最多的区(Garbage First)。可设停顿目标(MaxGCPauseMillis),平衡吞吐与停顿。JDK9+ 默认。

四、ZGC(超低延迟)

染色指针 + 读屏障,停顿控制在 10ms 以内,且不顾堆大小。JDK15+ 生产可用,适合超大堆、极低延迟。

五、怎么选

一般服务:G1(默认,省心)。

超大堆 + 极致低延迟:ZGC。

别碰 CMS(已废弃)。

六、面试速记

吞吐 vs 停顿,看业务取舍。

CMS:低停顿但碎片,已废弃。

G1:Region + 优先回收垃圾多,默认。

ZGC:停顿 <10ms,超大堆友好。

现在默认选 G1,极致延迟上 ZGC。

七、一句话带走

GC 收集器:G1 是默认省心款,ZGC 是超低延迟款。被问怎么选,先问对方要吞吐还是要停顿。

JVM面试

更多 Java 面试速通,关注公众号持续更新。

原文JVM 专题 02|GC 收集器怎么选?CMS/G1/ZGC 别瞎配
江西,54分钟前,

随机文章