ZGC (Z Garbage Collector) 是由 Oracle 开发的一款具有划时代意义的超低延迟垃圾收集器。它最早在 JDK 11 中作为实验特性引入,在 JDK 15 中转为正式特性。 ZGC 的核心设计目标是:无论堆内存多大(从 8MB 到 16TB),垃圾回收的停顿时间(STW)都不会超过 1 毫秒(早期目标为 10ms,JDK 16 优化到了 1ms 以下)。 为了实现这个近乎苛刻的目标,ZGC 抛弃了传统 GC 的很多包袱,引入了两个极具创新性的核心技术:染色指针(Colored Pointers) 和 读屏障(Load Barrier)。 下面为你深度解析 ZGC 的工作原理。 --- 一、 ZGC 的核心基石(它是如何做到的?) 1. 染色指针(Colored Pointers) 传统的 GC(如 G1、CMS)通常把对象的标记信息(比如对象是不是垃圾、有没有被移动过)记录在对象头里。 ZGC 别出心裁,把这些标记信息直接记录在指针(引用地址)上。 在 64 位系统中,指针有 64 位。ZGC 利用了其中的高几位来做标记: 18 位:预留未使用。 4 位(...