经典垃圾收集器对比与选择
请列举从Serial到ZGC的主要垃圾收集器,说明各自特点、适用场景及核心区别。
回答
我还是少年
新生代收集器:
- Serial:单线程,STW,适合客户端模式或单核环境。
- ParNew:Serial的多线程版本,与CMS搭配使用。
- Parallel Scavenge:关注吞吐量,-XX:+UseAdaptiveSizePolicy自动调节。
老年代收集器:
- Serial Old:Serial老年代版,标记-整理。
- Parallel Old:Parallel老年代版。
- CMS:并发收集,低延迟,标记-清除,产生碎片。
全堆收集器:
- G1:Region分区,可预测停顿,JDK9+默认。
- ZGC:JDK11+实验,JDK15正式,并发染色指针+读屏障,<10ms停顿。
- Shenandoah:JDK12+,与ZGC类似但不用染色指针。
选择:吞吐量优先→Parallel Scavenge/Parallel Old;低延迟优先→CMS/G1/ZGC。