基础算法(理论层面)

算法原理优点缺点
标记-清除(Mark-Sweep)标记存活对象,清除未标记简单、不移动对象内存碎片、效率低
标记-复制(Mark-Copy)存活对象复制到另一块内存无碎片、高效内存利用率仅 50%
标记-整理(Mark-Compact)存活对象向一端移动,清理边界外无碎片、内存利用率高移动对象开销大、STW 长

垃圾回收器分类

1. 分代收集器

回收器新生代算法老年代算法特点适用场景
Serial复制整理单线程、STW客户端/嵌入式
ParNew复制(并行)Serial 的多线程版配合 CMS 使用
Parallel Scavenge复制(并行)整理吞吐量优先后台计算/批处理
Parallel Old整理(并行)Parallel 的老年代版同上

2.低延迟收集器(并发标记)

回收器算法核心设计优点缺点
CMS(Concurrent Mark Sweep)标记-清除并发标记、并发清除低延迟内存碎片、浮动垃圾、并发失败退化为 Serial Old
G1(Garbage First)标记-整理 + 复制Region 分区、优先回收垃圾最多区可预测停顿、平衡吞吐与延迟内存开销略大

G1 关键参数:-XX:MaxGCPauseMillis=200(目标最大停顿 200ms)

3.新一代低延迟收集器(ZGC / Shenandoah)

回收器算法核心设计目标停顿JDK 版本
ZGC标记-复制 + 染色指针并发整理、读屏障、染色指针< 10msJDK 11+(生产可用),JDK 15+ 稳定
Shenandoah标记-复制 + Brooks 指针并发标记、并发整理、读屏障< 10msJDK 12+(Red Hat 主导)
Epsilon不回收仅分配不回收,用于性能测试JDK 11+

核心对比

维度ParallelCMSG1ZGC / Shenandoah
设计目标吞吐量低延迟平衡超低延迟
最大堆无限制较小数十 GBTB 级
典型停顿数百 ms~数 s几十~几百 ms几十~几百 ms< 10ms
内存碎片严重可控
并发能力部分部分全并发
JDK 推荐JDK 8 默认已废弃(JDK 14)JDK 9+ 默认JDK 17+ 推荐

更多推荐