写点什么

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:005632

评论 1 条评论

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

一文看懂数据云平台的“可观测性”技术实践

科技热闻

ChatGPT:DevSecOps 落地实践的最后一公里

极狐GitLab

DevOps 云原生 Code Review DevSecOps ChatGPT

基于HTML5智慧产业园三维可视化运维平台

2D3D前端可视化开发

物联网 数字孪生 三维可视化 工业组态 智慧产业园区

大家都在用的6大类18款企业协同办公软件盘点

爱吃小舅的鱼

项目管理软件 研发管理软件 文档协同软件

腾讯云首发多款领先新品,TDSQL全新特性助力国产化替代提速

科技热闻

Vue3迎来升级,全面助力企业数字化转型

引迈信息

Web3和低代码开发:下一代Web应用开发的合作与创新

加入高科技仿生人

前端 Web 低代码

行业分析| 快对讲-融合会议的应用

anyRTC开发者

音视频 视频会议 快对讲 融合会议 电话会议

实践「容器镜像扫描」,Get 云原生应用的正确打开方式

极狐GitLab

Docker DevOps 云原生 DevSecOps 容器镜像

腾讯安全携手行业伙伴,详解攻击面管理(ASM)技术的“拓客”潜力

Geek_2d6073

国产游戏引擎,竟然用来搞民航

Openlab_cosmoplat

人工智能 开源

保密+完整+可用+安全,规避代码安全「马奇诺防线」,构建软件供应链整体安全

极狐GitLab

高可用 DevSecOps geo 代码安全 软件供应链安全

融云跨平台 SDK 自动生成技术的探索和实践

融云 RongCloud

sdk 融云 办公效率 通讯 图片资源

在研制带处理器的电子产品时,如何提高抗干扰能力和电磁兼容性?

华秋PCB

电磁 电路 处理器 控制器 抗干扰

【换模型更简单】如何用 Serverless 一键部署 Stable Diffusion?

Serverless Devs

云计算 Serverless AIGC

inBuilder低代码平台开发者分享课丨提交PR的正确姿势

inBuilder低代码平台

量化交易系统开发——现货策略

薇電13242772558

量化策略

软件测试丨Python学习笔记之内置库科学计算、日期与时间处理

测试人

Python 软件测试 测试开发

SRE方法论之拥抱风险

不思jo

#运维

ChatGPT到来个人如何应对

程序员半支烟

人工智能 职业成长

教你使用Feign替换RestTemplate

做梦都在改BUG

火山引擎DataLeap:3步打造“指标管理”体系,幸福里数据中心是这么做的

字节跳动数据平台

大数据 字节跳动 数据管理 指标管理 数据研发

低代码开发——进最热的赛道,啃最硬的骨头

引迈信息

前端 低代码 快速开发 JNPF

iTubeGo YouTube Downloader 快速下载视频~

真大的脸盆

Mac 视频下载 网页视频下载 Mac 软件 下载视频

让算力不再成为瓶颈,小红书机器学习异构硬件推理优化之道

小红书技术REDtech

机器学习 架构 异构计算

火山引擎DataTester分享:A/B实验中常见的8个错误

字节跳动数据平台

车载手势识别技术:未来交通的革命性解决方案

来自四九城儿

如何用一行代码实现监测 OpenAI,大幅提升使用体验

Yestodorrow

可观测性 用户体验 应用性能 ChatGPT

架构实战-毕业设计

程序员小张

「架构实战营」

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