首页 > 解决方案 > Java11 引入的 Z 垃圾收集器有多稳定?

问题描述

我正在使用Java 11,新的 Z 垃圾收集器(ZGC)看起来很有希望。

文档说它使用了一些低延迟垃圾收集机制,这样GC暂停时间永远不会超过10 ms,处理大堆非常好,并允许将未使用的堆内存返回给旧 GC 不存在的操作系统

我担心的是 - ZGC 有多稳定,如果在产品中继续使用它会有风险吗?

谢谢!

标签: javagarbage-collectionjava-11zgc

解决方案


根据JEP 377页面(2020/05/25 更新):

自从它在 JDK 11 中引入以来,我们收到了积极的反馈,我们已经解决了许多错误,并且我们添加了许多功能和增强功能。强调一些更重要的:

  • 并发类卸载
  • 取消提交未使用的内存(JEP 351)
  • 最大堆大小从 4TB 增加到 16TB
  • 最小堆大小减少到 8MB
  • -XX:SoftMaxHeapSize
  • 支持 JFR 泄漏分析器
  • 支持类数据共享
  • 有限且不连续的地址空间
  • 支持将堆放在 NVRAM 上
  • 提高 NUMA 意识
  • 多线程堆预触

此外,现在支持所有常用平台:

  • Linux/x86_64 (JEP 333)
  • Linux/aarch64 (8214527)
  • 窗户(JEP 365)
  • macOS (JEP 364)

ZGC 的测试表明它是稳定的,并且在撰写本文时,我们已经有几个月没有收到新的 ZGC 特定错误了。凭借 ZGC 今天所拥有的稳定性、功能集和平台支持,是时候移除其实验状态并使其成为产品功能了。

几个警告:

  • 这来自从事 ZGC 项目的团队。他们可能并不完全客观。(这只是人性......)。
  • 这取决于有多少人(团队和用户)正在测试/试用新的 GC。
  • 这取决于他们正在测试/尝试什么,以及这是否与您打算做的事情相匹配。
  • 对于像新的 Java GC 这样复杂的东西,一些错误可能需要数年时间才能以可重现的形式出现。

因此,虽然很有希望,但这并不能算作稳定性的可量化衡量标准,也不能提供风险的可量化衡量标准。


推荐阅读