写点什么

JEP423:G1 引入区域固定机制,降低 GC 延迟

  • 2024-01-05
    北京
  • 本文字数:855 字

    阅读完需:约 3 分钟

大小:442.91K时长:02:31
JEP423:G1引入区域固定机制,降低GC延迟

在评审结束后,JEP 423(Region Pinning for G1)已经被集成到 JDK 22 中。这个 JEP 旨在通过为G1垃圾回收器实现区域固定来降低 GC 延迟。这使得在 Major GC 和 Minor GC 期间可以固定任意区域,并且可以避免在实现 JNI 关键区域时禁用垃圾回收。


JEP 423 解决了 Java 与 C 和 C++等非托管语言之间的互操作性问题。JNI,作为互操作性的关键组件,允许 Java 应用程序调用其他语言编写的原生应用程序和库,或反过来。它提供了获取和释放Java对象指针的函数,这些函数必须成对使用。在获取和释放指针之间执行的代码被视为关键区域,在此期间,JVM 必须确保 GC 不移动关联的 Java 对象。默认的 GC,即 G1,在这些关键区域中会完全禁用垃圾回收,导致严重的延迟。这种方法通常会导致线程停滞、不必要的内存耗尽,甚至在极端情况下会导致 VM 过早关闭。


G1 引入区域固定从根本上改变了这种方式。JEP 423 允许 G1 在 GC 期间固定包含关键对象的特定内存区域,而不是禁用GC。这是通过在每个区域中维护关键对象的计数来实现的,在获取关键对象时增加计数,在释放时减少。当计数非零时,该区域被视为被固定,不会在 GC 期间被清理。这确保了关键对象不会被移动,避免了禁用 GC,并显著降低了延迟。


这个新特性是 Java 垃圾回收机制的一项重大进步。它旨在解决延迟问题,并在没有活动的 JNI 关键区域存在时保证 GC 停顿时间不出现回归。即使存在这样的区域,回归也是最小的。在 Major GC 和 Minor GC 期间实现区域固定证明了这种解决方案的健壮性。


不过,JEP 423 也存在潜在的风险和假设。一个重大风险是,如果应用程序同时固定多个区域,可能会导致堆内存耗尽。虽然目前没有直接解决方案,但从已经实现了类似机制的Shenandoah GC 来看,这种风险是可控的。


总的来说,JEP 423 为 OpenJDK 的 G1 垃圾回收器引入了重大的技术增强。区域固定特性解决了与 Java 本地接口(JNI)关键区域相关的延迟问题,改进了 JVM 在与非托管语言发生互操作时的垃圾回收处理。这表明了 OpenJDK 在努力完善和优化 Java 性能和互操作性能力方面所做的持续不断的努力。


原文链接

https://www.infoq.com/news/2023/12/region-pinning-to-g1-gc/

2024-01-05 08:005710

评论 1 条评论

发布
用户头像
这是机器翻译吗?
2024-01-05 14:42 · 湖北
回复
没有更多了
发现更多内容

克服 Prometheus 单值数据模型的局限性 — GreptimeDB 的新路径

Greptime 格睿科技

数据库 Promethues

深度盘点:国内 7 大企业网盘私有化部署厂商

易成研发中心

360企业云盘怎么样?与9款云盘的详细对比

易成研发中心

探索工程智能体和RAG建设的思考

CodeBuddy

腾讯云 腾讯 腾讯云AI代码助手

商业画布如何制作?10个优质商业画布模板案例推荐!

职场工具箱

商业模式 在线白板 办公软件 绘图软件 商业模式画布

鸿蒙NEXT开发案例:数字转中文大小写

zhongcx

鸿蒙

万字干货!手把手教你如何训练超大规模集群下的大语言模型

快手技术

人工智能 大语言模型

高性能存储SIG月度动态:重构和优化fuse,推动containerd社区支持erofs

OpenAnolis小助手

开源 操作系统 龙蜥社区 OpenAnolis 龙蜥社区SIG

高性能网络SIG月度动态: 推进SMC支持基于eBPF透明替换和内存水位限制等多项功能支持

OpenAnolis小助手

开源 操作系统 龙蜥社区 OpenAnolis 龙蜥社区SIG

“双龙”联合!助力辽宁沈抚示范区打造安全可靠的政务云平台 | 龙蜥案例

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥案例

鸿蒙NEXT开发案例:字数统计

zhongcx

Procedure 框架的设计和应用

Greptime 格睿科技

数据库 分布式 procedure

【IoTDB 线上小课 09】时序大模型的发展历程,出现高性能国产成果?

Apache IoTDB

Coolbpf 最新特性系列解读:eNetSTL 网络功能加速库在龙蜥社区开源

OpenAnolis小助手

操作系统 龙蜥社区 coolbpf 龙蜥系统运维联盟

开源生态发展合作倡议

OpenAnolis小助手

开源 操作系统 龙蜥社区 OpenAnolis

数智化浪潮:如何利用低代码平台加速企业创新

不在线第一只蜗牛

低代码 数智化

腾讯云 AI 代码助手:产品研发过程的思考和方法论

CodeBuddy

腾讯云 代码 腾讯云AI代码助手

巧用观测云可用性监测(云拨测)

观测云

云拨测

TapData 正式加入 openEuler 社区,达成开源共识,携手推进国产基础软件生态创新与发展

tapdata

openEuler 开源社区 Tapdata 开源操作系统

Cloud Kernel SIG 月度动态:发布ANCK 5.10-017.3小版本,引入SMC、TDX等多项特性

OpenAnolis小助手

开源 操作系统 龙蜥社区 OpenAnolis 龙蜥sig

忽然就卷起来的AI Coding 赛道

松子(李博源)

#大模型 #AI #AI编程

手把手教学攻略:如何在Anolis OS上部署OpenVINO深度学习模型?

OpenAnolis小助手

AI 操作系统 OpenVINO Anolis OS

用 DataEase 分析北京近年房价变化

搞大屏的小北

数据分析 数据可视化 BI 分析工具 DataEase 房价

信创时代的数据库之路:2024 Top10 国产数据库迁移与同步指南

tapdata

数据复制 oceanbase 国产数据库 数据迁移工具 PolarD

行业热点|助力企业解决降本增效的难题,Altair HPCWorks新功能创新升级

Altair RapidMiner

gpu 数据分析 HPC #人工智能 altair

JEP423:G1引入区域固定机制,降低GC延迟_编程语言_A N M Bazlur Rahman_InfoQ精选文章