写点什么

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

评论 1 条评论

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

ABAP excel数据上传函数改造

Jasen Ye

Excel upload abap

web前端培训如何用CSS来实现透明方格

@零度

CSS web前端

利用亚马逊云科技整个自用免费网盘

亚马逊云科技 (Amazon Web Services)

Builder 专栏

Meetup预告|云原生时代热门监控利器解析与应用

云智慧AIOps社区

运维 云原生 安全 监控工具

对于金融机构而言,为什么选择私有化IM比企业微信、钉钉更好?

BeeWorks

一首古诗带来的图数据库大冒险

NebulaGraph

知识图谱 实践案例 分布式图数据库

揭秘!网易有道技术岗实习生都在做什么?

有道技术团队

招聘 实习 网易有道

知识管理在企业竞争发展中的作用

小炮

知识管理

从0到1落地电商小程序之微服务设计

晨亮

「架构实战营」

微服务架构下消息服务多通道设计思路

全象云低代码

微服务 低代码 后端开发 消息中间件 后端技术

从多快好省到好快省多,您的项目管理走对了吗?

禅道项目管理

项目管理

如何升级到 React 18

CRMEB

【直播回顾】OpenHarmony知识赋能第四期第三课——I2C驱动开发

OpenHarmony开发者

OpenHarmony 驱动开发

WebGL 及其在 WebRTC 中的应用

ZEGO即构

WebRTC WebGL 实时音视频 即构科技

大数据培训连续登录经典面试案例

@零度

大数据

OceanBase 源码解读(九):存储层代码解读之「宏块存储格式」

OceanBase 数据库

源码剖析 oceanbase

郑泽康:一名热爱技术的“保安”|OneFlow U

OneFlow

人工智能 机器学习 深度学习 程序人生 cuda

windows下C与C++执行cmd命令并实时获取输出

DS小龙哥

3月月更

从HDFS的写入和读取中,我发现了点东西

华为云开发者联盟

hdfs HDFS写入 HDFS读取 文件读取

速度和质量不可兼得,为什么DevOps落地如此困难?

飞算JavaAI开发助手

实践丨SpringBoot整合Mybatis-Plus项目存在Mapper时报错

华为云开发者联盟

spring 容器 Spring Boot 测试 Mybatis-Plus

Facebook 开源 Golang 实体框架 Ent 现已支持 TiDB

PingCAP

你的“数学潜意识”原来可以被唤醒!

博文视点Broadview

项目管理标准化的武林秘籍

大智若愚

团队管理 项目管理 标准化 软技能 标准框架

java培训如何用反射做简易 Spring IOC 容器

@零度

Java springloc

云原生时代已来,计算机教育如何因「云」而变?

阿里云弹性计算

云原生 ECS 计算机教育

SeaTunnel 在 oppo 的特征平台实践 | ETL 平台数据处理集成

Apache SeaTunnel

Big Data 大数据平台 大数据开发 apache 社区 opensource

手把手教你从Apk中取出算法

奋飞安全

android 安全 java

ABAP 文件上/下载

Jasen Ye

upload abap download template GRAPHICS

数仓如何设置大小写不敏感函数

华为云开发者联盟

MySQL DWS GaussDB(DWS) 大小写不敏感函数 GUC参数

加快云原生技术转型, 智能调度登陆华为云DevOps: 增速,节源

华为云开发者联盟

软件 DevOps 代码托管 智能调度 华为云DevOps

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