写点什么

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

评论 1 条评论

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

可能是全网第一个使用RediSearch实战的项目

越长大越悲伤

redis 中文分词 全文检索 SpringBoot 2 实战案例

linux之ssh-keygen命令

入门小站

Linux

在线OPML压缩工具

入门小站

工具

王者荣耀商城异地多活架构设计

风中奇缘

架构实战营 「架构实战营」

怒肝 JavaScript 数据结构 — 数组篇(二)

杨成功

JavaScript 数据结构 4月月更

Go Error 最佳实践

宇宙之一粟

Go 语言 Error 4月月更

【架构学习 07】——王者荣耀商城异地多活架构设计

tiger

架构实战营

虎符交易所Hoo研究院|关于跨链(上)——Cosmos

区块链前沿News

虎符交易所

带码农《手写Mybatis》进度3:实现映射器的注册和使用

小傅哥

小傅哥 mybatis 手写Mybatis

深入剖析 RocketMQ 源码 - 负载均衡机制

vivo互联网技术

负载均衡 分布式 java

[Day7]-[动态规划] 最大子数组和

方勇(gopher)

LeetCode 动态规划 数据结构与算法、

怒肝 JavaScript 数据结构 — 栈篇(一)

杨成功

JavaScript 数据结构 4月月更

王者荣耀商城异地多活架构设计

smile

单线程的 JavaScript 是怎么实现异步的?

CRMEB

王者荣耀商城异地多活架构设计

张逃逃

在线XML转CSV工具

入门小站

工具

模块二

ASCE

面试突击37:线程安全问题的解决方案有哪些?

王磊

Java java面试

BFF治理与优化实践

码猿外

架构 微服务 BFF 软件架构治理

什么是数据库?5分钟深入理解数据库原理。

喀拉峻

数据库 网络安全

OpenMLDB 获评 CSDN IT 技术影响力之星 “年度开源项目”奖项

第四范式开发者社区

人工智能 深度学习 数据库 开源 特征平台

【模块七】王者荣耀商城异地多活架构设计

yhjhero

架构训练营

面试突击36:线程安全问题是怎么产生的?

王磊

Java java面试

TDesign 更新周报(2022年4月第1周)

TDesign

Hoo虎符研究院|区块简报220406期

区块链前沿News

虎符交易所

为什么Java仍旧生机盎然——对“为什么Java正在消亡”的回应

Geek_rze78a

Java

当东数西算变成一场西游记……

脑极体

手机应用使用情况监控统计APP

android App 自律

架构实战训练营模块七

刘帅

使用 Next.js、LeanCloud 和 Tailwind CSS 创建全栈应用

张泽豪

全栈 LeanCloud nextjs Tailwind Vercel

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