跳到主要内容

JEP 379:Shenandoah:低暂停时间垃圾收集器(生产)

概括

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

非目标

  • 此 JEP 不建议更改默认 GC,仍为 G1。

  • 此 JEP 不建议更改 Shenandoah 开发流程,它将继续支持最新的 JDK 和流行的 LTS/STS JDK。

动机

Shenandoah 由JEP 189集成到 JDK 12 中。它被标记为实验性的,以便与其他新 GC 的状态相匹配,特别是 Epsilon GC 和 ZGC。现在 Shenandoah 已准备好放弃其在主线 JDK 中的实验状态,正如最近在JEP 377中针对 ZGC 所建议的那样。

描述

在 JDK 12 及更高版本中,Shenandoah 通过选项启用-XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC。让 Shenandoah 成为产品功能意味着-XX:+UnlockExperimentalVMOptions不再需要它。一系列相关的 Shenandoah 选项将从“实验”转变为“产品”,并接受审查。选项的默认值不会更改。它使这一变化成为标志类别中相当表面的变化。

在集成到 JDK 12 中时,Shenandoah 已经作为受支持的垃圾收集器在 Red Hat 8u 和 11u 下游版本中发布,并由 RHEL 和 RHEL 下游用户使用。因此,Shenandoah 8uShenandoah 11u已经是非实验性的,因此不受此更改的影响。由于只有少数用户运行 8u 和 11u 以外的系统,因此我们预计此更改的实际影响很小。

测试

预计测试变化很少甚至没有。这主要是因为 Shenandoah 代码在 8u、11u、14u 和 dev 之间同步,并且测试已经接受 Shenandoah 可以是“实验”或“产品”。