ZGC (The Z Garbage Collector) 是 Java 11 引入的一款低延迟垃圾回收器。其核心设计目标是在 TB 级堆内存下,将停顿时间控制在 10ms 以内(Java 21 后提升至亚毫秒级)。
ZGC 巧妙地利用了 64 位指针的冗余位来存储对象状态。通过 Finalizable、Remapped、Marked0 和 Marked1 四个标志位,实现了在不访问对象头的情况下完成并发标记。
// JVM 启动参数示例
-XX:+UnlockExperimentalVMOptions
-XX:+UseZGC
-Xms32g -Xmx32g
-XX:ZCollectionInterval=60
与传统的 G1 不同,ZGC 使用了读屏障。每当应用线程从堆中加载对象引用时,读屏障会检查着色指针的有效性。如果指针状态不正常,则触发“自愈”过程,将指针修复为正确地址。