写点什么

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

评论 1 条评论

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

R2M分布式锁原理及实践

京东科技开发者

redis 框架解析 企业号 2 月 PK 榜 r2m 分布式锁原理

一文搞清商旅酒店数据治理——酒店数据问题分析及治理方案

元年技术洞察

数据中台 数据 数据治理 企业数字化转型 商旅系统

TiCDC 源码阅读(四)TiCDC Scheduler 工作原理解析

PingCAP

数据库 开源 TiDB 源码解读

冗余是什么意思?与双机热备有什么区别?

行云管家

高可用 冗余 双机热备

re:Invent 开发者最喜爱产品票选榜单出炉!快来探索高光产品~

亚马逊云科技 (Amazon Web Services)

带你读论文丨S&P21 Survivalism: Living-Off-The-Land 经典离地攻击

华为云开发者联盟

人工智能 华为云 论文 企业号 2 月 PK 榜 华为云开发者联盟

选择前端培训怎么学?

小谷哥

杭州银行牵手火山引擎数智平台,要既“好”又“快”地完成数字化升级

字节跳动数据平台

大数据 金融 银行

一个成熟的WMS(仓库管理系统)应该具备的那些功能

SAP虾客

功能 WMS系统 成熟的WMS系统

使用插件扩展服务网格

Flomesh

插件 服务治理 服务网格 Pipy

学习web前端培训怎么样?

小谷哥

邀请 | Flink Batch 社区开发者会议

Apache Flink

大数据 flink 实时计算

CompletableFuture实现异步转同步

FunTester

新鲜出炉!东莞华为云团泊洼数据中心T1项目成功入选2022年ICT优秀案例

极客天地

杭州云堡垒机采购选择哪家好?为什么?

行云管家

云计算 网络安全 数据安全 云堡垒机

必备技巧,PCB设计布局的4项注意(基础篇)

华秋PCB

PCB 布局 PCB设计 布线

前端培训学习前景怎么样?

小谷哥

防sql注入原理浅析

追赶者

SQL注入

个人总结18条心法奉上,手把手带你阅读开源项目的源码!

程序员小毕

源码 程序员 面试 程序人生 架构师

零基础自学网络安全/网络渗透攻防路线学习方法【建议收藏】

网络安全学海

黑客 网络安全 安全 信息安全 渗透测试

sun4.0泰山众筹模式项目系统开发技术讲解放哪(Demo)

I8O28578624

java线下培训适合小白学习吗

小谷哥

火山引擎ByteHouse助力中国地震台网中心,快速构建一站式实时数仓

字节跳动数据平台

大数据 Clickhouse 数据平台

如何使用 Terraform 在亚马逊云科技上创建 ShardingSphere Proxy 高可用集群?

亚马逊云科技 (Amazon Web Services)

数据库 负载均衡 存储

TAE-MatrixOne云原生事务与分析引擎

MatrixOrigin

数据库事务 云原生数据库 国产数据库 MatrixOrigin MatrixOne

java开发培训机构怎样选择?

小谷哥

Studio One2023永久和谐版水果编曲工具使用教程

茶色酒

Studio One 5 Studio One2023

如何让OpenHarmony编译速度“狂飙”

离北况归

OpenHarmony

Java Agent 踩坑之 appendToSystemClassLoaderSearch 问题

阿里巴巴中间件

Java 阿里云

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