什么是 ZGC?
ZGC 代表 Z 垃圾收集器。Z 垃圾收集器(ZGC)在 Java 11 中作为低延迟垃圾收集机制被引入。ZGC 最初是在 Java 11 中作为一个实验性特性发布的,因为开发者社区认为它太大而不适合早期发布。ZGC 确保垃圾收集的暂停时间不依赖于堆大小。无论堆大小是 2MB 还是 2GB,暂停时间都不会超过 10 毫秒。
然而,ZGC 在将未使用的堆内存返还给操作系统方面存在限制,不像其他 HotSpot 虚拟机的垃圾收集器(如 G1 和 Shenandoah)那样。
Java 15 将 ZGC(Z 垃圾收集器)作为标准特性发布。直到 Java 15 它还是一个实验性特性。ZGC 是一个低延迟、高度可扩展的垃圾收集器。
ZGC 性能非常高,在处理大规模数据的应用(如机器学习应用)时也能高效运行。它确保在数据处理过程中不会因为垃圾收集而导致长时间的暂停。ZGC 支持 Linux、Windows 和 MacOS。
Z 垃圾收集器的特点
自从 Java 16,ZGC 对线程栈的处理从安全点(Safepoints)移到了并发阶段,并极大地提高了效率。以下是自那时以来对垃圾收集的一些改进:
-
ZGC 默认情况下会将未提交的内存返回给操作系统,直到达到最大堆大小。
-
-
ZGC 现在支持高达 16TB 的堆大小,相比之前 4TB 的限制有了显著提高。
-
-
-
-
-
-
-
-
-
-
使用旧版的垃圾收集
为了恢复到 Java 11 的垃圾收集方式,我们可以使用以下选项: