zgc的核心优势在于将垃圾回收暂停时间稳定控制在1毫秒以内且与堆大小无关,通过并发标记与转移、着色指针和读屏障三项技术协同实现。

ZGC的核心优势在于它能把垃圾回收的暂停时间压到极低水平,且这个时间几乎不随堆大小变化——JDK 16起最大停顿稳定在1毫秒以内,实测中常低于0.5毫秒。这不是靠牺牲吞吐量换来的,而是通过三项底层技术协同实现的。
并发标记与并发转移
ZGC把绝大部分工作(包括标记存活对象、移动对象、整理内存)都放在应用线程运行的同时完成。整个GC周期里,真正需要暂停应用的阶段只有三个:初始标记(扫描GC Roots)、再标记(处理并发期间的引用变化)、初始转移(选定首批待回收区域)。这三个阶段加起来通常不到1ms。
着色指针(Colored Pointers)
ZGC不依赖额外的位图或记忆集来记录对象状态,而是直接把标记信息(如是否已标记、是否已重定位)编码进64位指针的高位。这样每次访问对象时,仅靠指针本身就能判断状态,省去了查表、同步元数据等开销。这项设计大幅降低了并发操作的复杂度和延迟抖动。
读屏障保障并发安全
当ZGC在后台移动对象时,应用线程可能正要读取该对象。ZGC通过在每次对象引用加载(load)时插入轻量级读屏障,自动将旧地址替换为新地址,确保访问始终正确。这个过程对Java代码完全透明,也不影响正常执行路径的性能。
堆大小无关的停顿表现
传统GC的停顿往往随堆增长而变长,ZGC则不同:它的STW时间只和GC Roots数量、活跃线程数相关,与堆是1GB还是16TB无关。这意味着在金融交易、实时风控、高频日志分析等场景下,系统响应可预测、无尖刺、不抖动。











