Java11 引入的 Z 垃圾收集器有多稳定?

Ami*_*mar 1 java garbage-collection java-11 zgc

我正在使用Java 11新的 Z 垃圾收集器 (ZGC) 似乎很有前途。

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

我担心的是 - ZGC 的稳定性如何,如果在生产中继续推进,是否存在风险?

谢谢!

Ste*_*n C 5

根据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 这样复杂的东西,一些错误可能需要数年时间才能以可重现的形式出现。

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