G1 停顿 100ms 还不够?ZGC 停顿 < 1ms?并发转移是什么黑科技?染色指针、读屏障、Brooks Pointer——低延迟 GC 的底层原理一篇讲透。
一、为什么需要低延迟 GC
1.1 G1 的瓶颈
G1 的 STW 阶段:
1. 初始标记(STW)→ 复用 Young GC,可忽略
2. 重新标记(STW)→ 处理 SATB,10-50ms
3. 混合回收(STW)→ 复制存活对象,50-200ms
G1 的瓶颈:
对象复制(疏散)必须在 STW 中完成
→ 存活对象越多,复制越久,STW 越长
→ 堆越大,存活对象越多,STW 越长
核心问题:G1 的对象转移是 STW 的
即使并发标记做得再好,复制对象必须停顿
→ 16GB 堆 STW 100ms,32GB 堆 STW 200ms,64GB 堆 STW 400ms
2026/7/2大约 9 分钟