Java 21 计划砍掉分代式 Shenandoah GC


Java 21 预计于 2023 年 9 月 19 日正式发布,这是继 Java 17 之后的下一个 LTS 版本。截至 6 月 8 日,JDK 21 已进入 Rampdown 第一阶段;随着整个功能集被冻结,分代式 Shenandoah (Generational Shenandoah) 功能将被删除(从 16 个功能削减到 15 个),这是一种增强 Shenandoah 垃圾收集器 (GC) 的实验性功能。

根据介绍,分代式 Shenandoah 功能被移除的核心原因是缺乏准备。分代式 Shenandoah 的 JEP 作者 Roman Kennke 提议将其从 Java 21 中删除,以更好的评估准备情况。“Shenandoah 团队决定跳过 JDK 21 并花时间尽我们所能提供最好的 Generational Shenandoah。”

“我们要感谢所有花时间审查我们的拉取请求并提供反馈的人。鉴于在审查过程中发现的风险,以及没有足够的时间来执行如此大量的代码贡献所需的彻底审查,我们决定目前关闭此 PR。我们将寻求以 JDK 22 为目标。”

分代式 Shenandoah 将通过实验性的分代收集功能来增强 Shenandoah,以提高可持续吞吐量、负载峰值弹性和内存利用率。该计划旨在不会破坏 non-generational Shenandoah 的情况下,提供实验性的分代模式,以在未来版本中使其成为默认模式。其他目标包括在不牺牲低 GC pauses 的情况下减少持续内存占用、减少 CPU 和功耗、保持高吞吐量,以及降低在分配峰值期间导致退化和完整集合的风险。而 Non-generational Shenandoah 不会被取代。

移除建议的审查期截至 6 月 14 日,如果没有太大异议的话,该 JEP 将正式从 JDK 21 中删除。此决策只与支持 Shenandoah GC 的 OpenJDK 版本用户有关;不会影响 G1 GC、Z Garbage Collector(ZGC)或其他现代垃圾收集器。也不影响使用 G1 GC 和 ZGC 的 Java 发行版,如 Oracle OpenJDK 和 Oracle JDK。

JDK 21 的初始候选版本将于 8 月发布,第二个候选版本将于 8 月下旬发布。


相關推薦

2023-06-10

制 API Key Encapsulation Mechanism API 、Z 垃圾收集器的分代行为 Generational ZGC 、序列化集合 Sequenced Collections  ,以及努力简化 Hello World 写法的 JEP 445 ...(关于 JEP 445 的详情可查看该文章:JAVA 新提案:

2023-11-04

拟机可以轻松生成有效的代码来访问其字段,而不会像 JavaScript 等动态语言那样存在去优化的风险。 因此,该提案通过结构和数组堆类型为 WebAssembly 增加了对高级托管语言的有效支持,使得针对 Wasm 的语言编译器能够与主机 VM

2023-04-30

率。其他在 Java 8 之后出现的实验性垃圾收集器(ZGC 和 Shenandoah)在生产系统中的使用仍然很少。两者都有生产就绪版本,但在一般处理中仍然可以忽略不计。 更多详情可查看完整报告。 

2023-07-08

装选项代替。 根据 Ubuntu 桌面工程总监 Tim 的说法,他们计划引入新的安装选项——统一默认安装(unified default install),来取代现有的安装选项。据称统一默认安装能够让用户在安装期间选择要安装/添加的应用程序。 他表示,

2022-07-28

。 GraalVM 是一个高性能的 JDK 发行版。它旨在加速用 Java 和其他 JVM 语言编写的应用程序的执行,同时还为 JavaScript、Python、基于 LLVM 的语言(如 C 和 C++)以及许多其他流行编程语言提供运行时。此外,GraalVM 为编程语言之间

2024-08-09

。框架最低要求使用 JDK21,这样即可以让项目享受到分代 ZGC 带来的改进,还能享受语法上的简洁。分代 ZGC 远低于其亚毫秒级暂停时间的目标,可以在不影响游戏速度的情况下,清理掉多余的内存;这样就不会出现卡顿

2024-09-26

。框架最低要求使用 JDK21,这样即可以让项目享受到分代 ZGC 带来的改进,还能享受语法上的简洁。分代 ZGC 远低于其亚毫秒级暂停时间的目标,可以在不影响游戏速度的情况下,清理掉多余的内存;这样就不会出现卡顿

2024-10-10

。框架最低要求使用 JDK21,这样即可以让项目享受到分代 ZGC 带来的改进,还能享受语法上的简洁。分代 ZGC 远低于其亚毫秒级暂停时间的目标,可以在不影响游戏速度的情况下,清理掉多余的内存;这样就不会出现卡顿

2024-07-25

获取游戏对外服的数据与扩展 (yuque.com) ... ... 省略部分代码 @ActionMethod(ExternalBizRegionCmd.listOnlineUserAll) public List<Long> listOnlineUserAll(FlowContext flowContext) { // 创建 RequestCollectExternalMessage var request = flowContext .createRequestCollectExtern

2024-08-27

迟的。框架最低要求使用 JDK21,这样即可以让项目享受到分代 ZGC 带来的改进,还能享受语法上的简洁。分代 ZGC 远低于其亚毫秒级暂停时间的目标,可以在不影响游戏速度的情况下,清理掉多余的内存;这样就不会出现卡顿或

2024-07-09

(对接文档) public static void main(String[] args) { ... 省略部分代码 new NettyRunOne() ... ... .startup(); // 生成对接文档 BarSkeletonDoc.me().buildDoc(); } ioGame 使用趋势数据 关注 ioGame 的游戏服务器开发者持续增多,2022-09 ~ 至今各月的统计

2024-06-22

迟的。框架最低要求使用 JDK21,这样即可以让项目享受到分代 ZGC 带来的改进,还能享受语法上的简洁。分代 ZGC 远低于其亚毫秒级暂停时间的目标,可以在不影响游戏速度的情况下,清理掉多余的内存;这样就不会出现卡顿或

2022-04-29

。 这两个新功能一个是我们之前介绍过的 Topics API(原计划第一季度末上线),另一个则是 FLEDGE(First "Locally-Executed Decision over Groups" Experiment),它们两个都是 Google 为了保护用户隐私而推出的广告分析机制。 为了避免用户

2023-09-12

AnnotationFormatError(2.13.11 回归)( scala/bug#12799 ) 计划将在 Scala 2.13.12 中解决这些问题。 详情可查看更新说明:https://github.com/scala/scala/releases/tag/v2.13.11