JEP 379:Shenandoah:一款低暂停时间的垃圾收集器(生产环境适用)
总结
将 Shenandoah 垃圾收集器从实验性功能更改为产品功能。
非目标
-
本 JEP 不提议更改默认的 GC,该位置仍为 G1。
-
本 JEP 不提议更改 Shenandoah 的开发流程,将继续支持最新的 JDK 以及流行的 LTS/STS JDK。
动机
描述
在 JDK 12 及更高版本中,通过 -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC
选项可以启用 Shenandoah。将 Shenandoah 转变为产品功能意味着将不再需要 -XX:+UnlockExperimentalVMOptions
。许多与 Shenandoah 相关的选项将从“实验性”转为“产品级”,但需经过审查。这些选项的默认值不会改变。这使得此更改在标志类别中更像是一个表面上的改动。
在 Shenandoah 被集成到 JDK 12 的时候,它已经被包含在 Red Hat 8u 和 11u 的下游发布版本中,作为一个受支持的垃圾收集器,并被 RHEL 及其下游用户使用。因此,Shenandoah 8u 和 Shenandoah 11u 已经是非实验性质的,因此不受此更改的影响。由于只有极少数用户运行的不是 8u 或 11u,我们预计此更改的实际影响微乎其微。
测试
测试的更改预计会很少甚至没有。这主要是因为 Shenandoah 的代码在 8u、11u、14u 和 dev 中保持同步,而且测试已经接受 Shenandoah 可以是“实验性”或“产品级”的。