JVM
✅ZGC和CMS和G1的区别对比_

✅ZGC和CMS和G1的区别对比_

典型回答

✅JDK 11中新出的ZGC有什么特点?

✅G1和CMS有什么区别?

上面两篇分别介绍过G1和CMS的区别,以及ZGC的特点,那么三个放到一起对比一下,先把G1和CMS的区别搞过过来,再加上ZGC的一些新东西。

特性 CMS G1 ZGC
JDK版本 1.8及以前,(JDK14中被移除) 1.7+ (1.9+的默认GC) JDK 15+
设计目标 低延迟,减少GC停顿时间 可预测的停顿时间,兼顾吞吐量和延迟 极低延迟(亚毫秒级停顿),支持超大堆
STW 部分STW(参考三色标记法) 部分STW(参考三色标记法) 几乎所有阶段都是并发执行的
分代情况 物理连续的年轻代+老年代 划分为等大小Region,逻辑分代 划分为等大小Region (JDK21前无分代,JDK21后支持分代)
回收位置 老年代 整堆 整堆
GC算法 标记-清除算法 区域化的标记-整理算法(按照Region) 并发标记-整理 + 可扩展的区域分配
碎片产生 存在内存碎片 可防止内存碎片产生 可防止内存碎片产生
可预测性 无法预测 G1的STW时长可预测
堆内存基本要求 一般要求不高 4G以上 超大堆(TB级别)
自适应调优 不支持 支持
核心技术 三色标记法 三色标记法,Region 染色指针、读屏障