跳到主要内容

JEP 379:Shenandoah:一款低暂停时间的垃圾收集器(生产环境适用)

QWen Max 中英对照 JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector (Production)

总结

将 Shenandoah 垃圾收集器从实验性功能更改为产品功能。

非目标

  • 本 JEP 不提议更改默认的 GC,该位置仍为 G1。

  • 本 JEP 不提议更改 Shenandoah 的开发流程,将继续支持最新的 JDK 以及流行的 LTS/STS JDK。

动机

Shenandoah 通过 JEP 189 被集成到 JDK 12 中。它被标记为实验性功能,以与其他新的垃圾收集器(尤其是 Epsilon GC 和 ZGC)的状态保持一致。如今,正如最近在 JEP 377 中针对 ZGC 所建议的那样,Shenandoah 已准备好在主流 JDK 中摆脱其试验性状态。

描述

在 JDK 12 及更高版本中,通过 -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC 选项可以启用 Shenandoah。将 Shenandoah 转变为产品功能意味着将不再需要 -XX:+UnlockExperimentalVMOptions。许多与 Shenandoah 相关的选项将从“实验性”转为“产品级”,但需经过审查。这些选项的默认值不会改变。这使得此更改在标志类别中更像是一个表面上的改动。

在 Shenandoah 被集成到 JDK 12 的时候,它已经被包含在 Red Hat 8u 和 11u 的下游发布版本中,作为一个受支持的垃圾收集器,并被 RHEL 及其下游用户使用。因此,Shenandoah 8uShenandoah 11u 已经是非实验性质的,因此不受此更改的影响。由于只有极少数用户运行的不是 8u 或 11u,我们预计此更改的实际影响微乎其微。

测试

测试的更改预计会很少甚至没有。这主要是因为 Shenandoah 的代码在 8u、11u、14u 和 dev 中保持同步,而且测试已经接受 Shenandoah 可以是“实验性”或“产品级”的。