ZGC 与 Shenandoah 是两款面向低延迟场景的并发垃圾回收器,均致力于将停顿时间控制在毫秒级。
一、核心机制对比
| 维度 | ZGC | Shenandoah |
|---|---|---|
| 并发标记 | 染色指针 | Brooks 转发指针 |
| 并发转移 | 读屏障自愈 | 读写屏障 |
| 最大堆支持 | TB 级 | 较大 |
| 停顿目标 | < 1ms | < 10ms |
| JDK 版本 | 11 实验,15 正式 | 12 正式 |
二、启用方式
bash
java -XX:+UseZGC -Xmx16g -jar app.jar
java -XX:+UseShenandoahGC -Xmx16g -jar app.jarZGC 通过染色指针将标记信息存入指针本身,Shenandoah 则使用 Brooks 指针间接访问对象。两者均需承担读屏障带来的吞吐损耗,适合对延迟敏感的大内存服务。