Java 简明教程

Java - Z Garbage Collectors (ZDC)

What is ZGC?

ZDC 表示 Z 垃圾收集器。Z 垃圾收集器 ZDC 随 Java 11 引入,作为低延迟垃圾收集机制。ZGC 在 Java 11 中作为实验功能引入,因为开发者社区认为过大而无法提早发布。ZGC 确保垃圾收集暂停时间不依赖于堆大小。无论堆大小是 2MB 还是 2GB,它都永远不会超过 10 毫秒。

但是 ZGC 限制向操作系统返回未使用的堆内存,如同其他 HotSpot VM GC,如 G1 和 Shenandoah。

Java 15 使 ZGC(Z 垃圾收集器)成为标准功能。它在 Java 15 之前一直是实验功能。它是一种低延迟和高度可伸缩的垃圾收集器。

ZGC 性能极佳,即使在海量数据应用程序(例如机器学习应用程序)中也能高效工作。它确保在由于垃圾收集而处理数据时不会出现长时间暂停。它支持 Linux、Windows 和 MacOS。

Features of Z Garbage Collector

使用 Java 16,ZGC 线程栈处理从安全点移至并发阶段,并极大地提高了其效率。以下是在此后对垃圾收集进行的增强,例如:

  1. ZGC 将未提交的内存默认返回给操作系统,直到达到最大堆大小。

  2. ZGC 在减小内存占用方面提升了性能。

  3. ZGC 现在支持 16 TB 的堆大小,与 4TB 大小限制相比。

  4. 线程栈处理已从 ZGC 安全点移出。

  5. 栈处理变得懒惰、协作、并发和增量。

  6. 所有其他每个线程的根处理均已从 ZGC 安全点中删除。

  7. HotSpot 子系统可以延迟处理堆栈。

  8. Concurrent class unloading

  9. Uncommiting of unused memory

  10. 支持类数据共享

  11. NUMA Awareness

  12. Multithreaded Heap Pre-touch

  13. 最大堆大小限制从 4 TB 增加到 16 TB。

Using Older way of Garbage Collection

为了转换回 Java 11 垃圾回收方式,我们可以使用以下选项:

  1. using -XX:-ZUncommit option

  2. 将 -Xms 和 -Xmx 堆大小设置为相同。