← 返回首页

深入理解 ZGC:如何在超大内存下实现亚毫秒级停顿

ZGC (The Z Garbage Collector) 是 Java 11 引入的一款低延迟垃圾回收器。其核心设计目标是在 TB 级堆内存下,将停顿时间控制在 10ms 以内(Java 21 后提升至亚毫秒级)。

着色指针 (Colored Pointers)

ZGC 巧妙地利用了 64 位指针的冗余位来存储对象状态。通过 FinalizableRemappedMarked0Marked1 四个标志位,实现了在不访问对象头的情况下完成并发标记。

// JVM 启动参数示例
-XX:+UnlockExperimentalVMOptions 
-XX:+UseZGC 
-Xms32g -Xmx32g 
-XX:ZCollectionInterval=60
    

读屏障 (Load Barriers)

与传统的 G1 不同,ZGC 使用了读屏障。每当应用线程从堆中加载对象引用时,读屏障会检查着色指针的有效性。如果指针状态不正常,则触发“自愈”过程,将指针修复为正确地址。