写点什么

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

评论 1 条评论

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

软件测试|Pytest必会技巧(四)使用autouse实现自动传参

霍格沃兹测试开发学社

SeaTunnel StarRocks 连接器的使用及原理介绍

StarRocks

数据库 大数据 OLAP 湖仓一体 大数据 开源

2023-06-05:Redis官方为什么不提供 Windows版本?

福大大架构师每日一题

redis 福大大

快手严厉打击直播下收割麦行为:自媒体蹭热度不可违背公序良俗

石头IT视角

三分钟知识点 - 如何选择编程语言

雨中山

Golden Gate (GGX) ZK 预编译: 彻底改变游戏玩法,成本降低千倍

股市老人

重磅版本发布|三大关键特性带你认识 Milvus 2.2.9 :JSON、PartitionKey、Dynamic Schema

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

Docker技术架构概述

穿过生命散发芬芳

Docker 6 月 优质更文活动

软件测试|简单易学的性能监控体系prometheus+grafana搭建教程

霍格沃兹测试开发学社

Taro框架应用优势下的移动App开发创新模式

FinFish

taro 跨端开发 小程序容器 跨端框架 小程序容器技术

什么是死锁?它是如何产生的?

javacn.site

关于前端,你都会什么?

MonkeyZz

前端

架构实战营模块 1 作业

銀色流星

架构实战营

软件测试|Pytest必会技巧(二)

霍格沃兹测试开发学社

三分钟知识点 - 重构平滑升级

雨中山

硬核干货!一文掌握 binlog 、redo log、undo log

架构精进之路

MySQL 数据库 后端 6 月 优质更文活动

小程序容器技术助力数字门户拓展多样化服务

FinFish

跨端开发 小程序容器 小程序容器技术 数字门户 移动门户

C语言编程语法—输入与输出

芯动大师

函数 输入输出 6 月 优质更文活动

DevOps| 研发效能团队和PMO团队如何合作共赢?

laofo

DevOps cicd 研发效能 持续交付 PMO

软件测试|Pytest必会技巧(三)

霍格沃兹测试开发学社

软件测试|教你用skip灵活跳过用例

霍格沃兹测试开发学社

K8S | 核心原理分析

Java Docker 架构 Kubernetes k8s

Flink实例:电商用户行为实时分析

TiAmo

数据分析 电商 flink 实战 6 月 优质更文活动

软件测试|Pytest的必会技巧(一)

霍格沃兹测试开发学社

对比才知差距!海尔“精华洗”用实验告诉用户

脑极体

海尔

建立互联网可靠性工程体系框架的思路

阿泽🧸

可靠性工程 6 月 优质更文活动

GitOps 最佳实践(下)| 基于 Amazon EKS 构建 CI/CD 流水线

亚马逊云科技 (Amazon Web Services)

Kubernetes

什么是OSPF被动接口?如何配置?华为、思科、瞻博网络三厂商命令来了

wljslmz

OSPF 6 月 优质更文活动

分析初识vue小案例

张三丰无极

6 月 优质更文活动

基于STM32+NBIOT+华为云IOT设计的智能井盖

DS小龙哥

6 月 优质更文活动

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