serial收集器是单线程stw收集器,新生代用复制算法、老年代用标记-整理,适合小内存单核场景;parallel追求高吞吐,多线程stw;cms并发标记但易碎片化;g1分区增量回收,兼顾延迟与吞吐;zgc实现超低延迟。

Serial 收集器:小内存场景下的简单高效
Serial 是最基础的单线程收集器,新生代用复制算法,老年代用标记-整理。它全程 STW,所以停顿时间不可控——一次 Full GC 可能卡住几百毫秒。但正因无并发开销、无同步成本,它在几十MB堆、单核 CPU 或嵌入式设备上吞吐量反而很高。适合后台批处理、开发测试或轻量级微服务,前提是能接受“偶尔卡一下”。启用方式:-XX:+UseSerialGC。
Parallel(吞吐量优先):最大化 CPU 利用率
Parallel Scavenge(年轻代) + Parallel Old(老年代)组合,目标明确:在可控停顿范围内追求最高吞吐量。它通过多线程并行回收缩短单次 GC 时间,但所有 GC 阶段仍需 STW。典型表现是:GC 频率低、每次耗时稍长、平均停顿 100–300ms,但总 GC 时间占比可压到 1% 以内。适合科学计算、离线报表、ETL 等后台任务。关键参数:-XX:+UseParallelGC -XX:MaxGCPauseMillis=200(仅作启发式目标,不保证)。
CMS 与 G1:从“并发标记”走向“增量压缩”
CMS 曾是低延迟标杆,通过并发标记和清除尽量避免 STW,但无法处理浮动垃圾,且老年代碎片化严重,最终触发 Serial Old 的 Full GC,造成“突兀长停顿”。G1 把堆划为区域,以增量方式回收,支持软实时目标:-XX:MaxGCPauseMillis=200 是硬约束(JVM 尽力满足)。它在中等堆(4–64GB)下兼顾吞吐与延迟,停顿通常 50–200ms,但高负载时可能波动。两者都牺牲部分吞吐换取更可预测的延迟。
ZGC:超低延迟的新范式
ZGC 设计目标是停顿时间 -XX:+UseZGC。











