简短的回答是,可从官方 OpenJDK 下载站点获得的 Oracle Java 和 OpenJDK Java 版本不包括对 Shenandoah GC 的支持。
但是许多其他 Java 12+ 版本的好消息。AdoptOpenJDK 可以。RHEL 的 Java 可以。Ubuntu 的 Java(从包管理器安装)可以。我希望其他人也这样做。
Red Hat 博客上的一篇文章解释了这种情况,摘录如下。
日期:2019 年 4 月 19 日
[...]
一点历史:Shenandoah 是一个高性能的低暂停时间垃圾收集器,是 Red Hat 主导的项目。当我们第一次提议为 OpenJDK 贡献 Shenandoah 时,Oracle 明确表示他们不想支持它。这很公平:OpenJDK 是免费软件,因此您不必支持任何您不想要的东西。我们告诉甲骨文,我们将与他们合作设计一个非常干净的可插拔垃圾收集器接口,允许任何人轻松选择垃圾收集器以包含在他们的构建中。我们一起做,Shenandoah 进入了 JDK 12。
显然甲骨文选择不建造雪兰多。他们通过排除它并没有做任何严格的错误,但我觉得有些不对劲。Oracle 不支持这些构建——您需要他们的商业二进制文件才能获得支持——那么为什么要排除 Shenandoah?可能只是因为他们使用标准构建脚本来构建开源二进制文件。然而,在一个功能相当轻的 OpenJDK 版本中,我发现开源构建排除最重要的贡献之一是很奇怪的。我非常感谢 Oracle 提供 GPL 许可的 OpenJDK 构建,但我希望他们能构建所有这些。
[...]
请注意,上面的评论不是我的,而是博文作者的评论。