写点什么

Java ZGC 垃圾收集器全面增强

  • 2023-08-15
    北京
  • 本文字数:1388 字

    阅读完需:约 5 分钟

Java ZGC 垃圾收集器全面增强

在 JDK 21 中,JEP 439(分代ZGC)从 Targeted 状态提升到 Completed 状态。该 JEP 建议,扩展 Z Garbage Collector(ZGC),为年轻对象和老对象维护单独的代,从而提高应用程序的性能。这将使得 ZGC 可以更频繁地收集趋于早亡的年轻对象。

 

Z Garbage Collector 专为低延迟和高可扩展性而设计,从 JDK 15 开始就可用于生产环境。它的大部分工作都是在应用程序线程运行过程中完成的,只会短暂中断这些线程。ZGC 的暂停时间以微秒为单位进行持续的测量,这使得它成为低延迟、高可扩展工作负载的首选。

 

新一代 ZGC 旨在降低分配停顿的风险,减少所需的堆内存开销,并减少垃圾收集的 CPU 开销。与非分代 ZGC 相比,这些优点预计并不会显著降低吞吐量。非分代 ZGC 的基本性质保持不变,如暂停时间不超过 1 毫秒,支持的堆大小从几百 MB 到许多 TB。

 

分代 ZGC 基于弱分代假说,即年轻对象往往会在年轻时死去,而老对象往往会保留下来。通过更频繁地收集年轻对象,ZGC 可以提高应用程序的性能。

 

最初,分代 ZGC 与非分代 ZGC 是一起提供的。用户可以在-XX:+UseZGC命令行选项中添加-XX:+ZGenerational选项,以选择 Generational ZGC。在未来的版本中,分代 ZGC 将成为默认选项,最终,非分代 ZGC 将被删除。

$ java -XX:+UseZGC -XX:+ZGenerational ...
复制代码

 

新的分代 ZGC 将堆划分为两个逻辑代:年轻代用于最近分配的对象,老年代用于长期对象。每个代独立收集,让 ZGC 可以专注于收集有利可图的年轻对象。

 

分代 ZGC 引入了多个使其不同于非分代 ZGC 和其他垃圾收集器的设计概念,包括无多重映射内存、优化屏障、双缓冲记忆集、无追加堆内存重定位、密集堆区域、大对象和完整垃圾收集。

 

分代 ZGC 的引入可以大幅提升在 Java 平台上运行应用程序的性能。通过更频繁地收集年轻对象,分代 ZGC 可以带来更低的延迟、更少的内存开销和更高的 CPU 利用率。这使得它在大多数用例中都成为比非分代 ZGC 更好的解决方案。

 

它引入了一个更复杂的系统。该系统在加载和存储屏障中使用了显式代码,并且并发运行两个垃圾收集器。新系统不使用多重映射内存,使用户更容易测量堆内存的使用情况,并可能将最大堆大小增加到超过非分代 ZGC 的 16TB 限制。加载和存储屏障使用快速路径和慢速路径、记忆集屏障、SATB 标记屏障、融合存储屏障检查和存储屏障缓冲等技术进行了优化。分代 ZGC 还引入了双缓冲记忆集,用于准确跟踪代际指针,并允许重定位,而且不需要额外的堆内存,进而实现高效的年轻代收集。该系统还可以很好地处理大对象,允许将它们分配给年轻代,而如果它们的寿命比较长,就将它们提升到老年代。完整垃圾收集将年轻代对象指向老年代对象的指针视为老年代对象图的根。

 

总之,OpenJDK 中的分代 ZGC 实现引入了一个更为复杂的系统,它并发运行两个垃圾收集器,并使用更复杂的屏障和染色指针(coloured pointer)。尽管复杂,但长期目标是用分代版本完全替换非分代 ZGC,以最小化维护成本。虽然大多数用例都有望从分代 ZGC 中受益,但一些非分代工作负载可能会出现轻微的性能下降。不过,因为不必频繁地收集老年代的对象,所以可以认为潜在的开销已被抵消。分代 ZGC 未来的改进和优化将由基准测试和用户反馈所驱动。分代 ZGC 的引入是提高 Java 平台应用程序性能的重要一步。

 

原文链接:

https://www.infoq.com/news/2023/07/java-enhance-zgc/


相关阅读:

Java 近期新闻:Micronaut 4.0、Payara 平台、Spring Web Flow 3.0、JetBrains AI 助手

Java 新特性完整指南:Switch 模式匹配

2023-08-15 08:007816

评论 1 条评论

发布
用户头像
“在未来的版本中,分代 ZGC 将成为默认选项,最终,非分代 ZGC 将被删除。”这里不太对,java21发布版本是非分代的。
2023-11-22 17:13 · 北京
回复
没有更多了
发现更多内容

使能千行百业数智化 用友BIP跑出“+速度”

用友BIP

用友BIP

为什么选择免费文件共享方法上的托管文件传输?

镭速

业界数据库工具结合 ChatGPT 的(不完全)汇总

Bytebase

人工智能 数据库 dba ChatGPT

Securtiy Code Reviewer 需要做些什么?6个安全实例一探究竟

极狐GitLab

DevOps Code Review 代码质量 代码安全 代码评审

什么是远程桌面?远程桌面软件是如何进行连接工作的?

RayLink远程工具

远程桌面连接 远程桌面工具 远程桌面软件

2023 年最佳免费远程控制软件RayLink-远程办公必备

RayLink远程工具

远程控制软件 远程办公软件

紧跟潮流,抓住趋势,跟上全民AI的节奏,开源IM项目OpenIM产品介绍,为AIGC贡献力量

Geek_1ef48b

远程桌面连接是什么?远程桌面连接使用教程

RayLink远程工具

远程控制软件RayLink助力畅玩爆火双人游戏

RayLink远程工具

远程控制软件

主题及关卡揭晓!全国智能汽车竞赛智慧交通创意组发布倒计时

飞桨PaddlePaddle

华为Mate X3震撼发布!轻薄折叠屏携华为阅读带来全新精品阅听体验

最新动态

GPT-4正刮起新的生成式AI风暴

澳鹏Appen

人工智能 ChatGPT GPT-4

免费的远程控制软件有哪些?远程控制软件哪个好用?

RayLink远程工具

远程控制软件 远控软件

共享文件和文档方法指南

镭速

远程办公模式开启,该如何选择合适的办公软件?

RayLink远程工具

远程办公 远程协助 远程办公软件

华为春季发布会召开,旗舰新品全面支持空间音频

最新动态

远程控制软件如何实现两台电脑连接

RayLink远程工具

远程控制软件

提升用户体验与搜索引擎排名|网页性能监控实操详解

云智慧AIOps社区

监控 监控管理平台 监控宝 网站优化 网站监控

定位任意时刻性能问题,持续性能分析实践解析

阿里巴巴中间件

阿里云 云原生 可观测

GTC 2023的算力协奏曲,NVIDIA与宁畅“共舞”AI时代

脑极体

算力

官宣|Apache Flink 1.17 发布公告

Apache Flink

大数据 flink 实时计算

大会计走向业财合一,价值财务成追求方向

用友BIP

智能会计 价值财务 全球司库 业财合一 业财融合

什么是远程桌面连接?win11系统如何启用远程桌面连接?

RayLink远程工具

远程桌面无法连接远程计算机是什么原因?

RayLink远程工具

远程桌面连接 远程桌面

什么是远程控制软件?远程控制软件推荐

RayLink远程工具

远程控制软件

大数据分析工具Power BI(六):DAX表达式简单运用

Lansonli

大数据分析工具Power BI

低代码实现探索(五十七)脚本模板模式的生成

零道云-混合式低代码平台

电脑怎么远程连接服务器?如何进行远程桌面连接?

RayLink远程工具

远程桌面连接

【必看答疑】为什么我的电脑远程连接不上?

RayLink远程工具

远程桌面连接

如何远程控制电脑,远程控制电脑的设置方法

RayLink远程工具

远程控制连接 远程控制电脑

时不我待,拥抱趋势,开源IM项目OpenIM技术简介

Geek_1ef48b

Java ZGC 垃圾收集器全面增强 _编程语言_A N M Bazlur Rahman_InfoQ精选文章