写点什么

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

评论 1 条评论

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

私有化IM即时通讯,稳定安全的企业内部聊天软件BeeWorks

BeeWorks

即时通讯 IM 私有化部署 企业级应用

Java AI智能编码助手:通义灵码安装和使用指南

阿里云云效

Java AI

JavaScript AI 通义灵码 VSCode插件安装与功能详解

阿里巴巴云原生

JavaScript

11Labs 发布 MCP 服务器,在 Claude 秒建语音智能体;通义开源 3D 数字人,集成实时互动对话全链路 SDK

声网

腾讯Bugly:当AI大模型为鸿蒙应用体验注入「智慧基因」

新消费日报

文本情感分析预处理教程:从数据采集到可视化

电子尖叫食人鱼

数据库 数据分析

CAD多段线夹点编辑的方法

极客天地

2025杭州国际机器人展览会

AIOTE智博会

机器人展 智能机器人展 人形机器人展

USDT支付系统开发,OTC承兑商支付系统开发

区块链软件开发推广运营

dapp 交易所开发 链游开发 公链开发 代币开发

CAD怎么将相连的线条合并

极客天地

PHP开发效率提升利器:通义灵码在VSCode中的应用与技巧

阿里巴巴云原生

php #云计算

PHP开发效率提升利器:通义灵码在VSCode中的应用与技巧

阿里云云效

php

Java AI智能编码助手:通义灵码安装和使用指南

阿里巴巴云原生

Java 人工智能 云计算

2025年最新盘点:国内外70家主流低代码/零代码开发平台

优秀

低代码 零代码

Web3游戏全栈开发实战指南:智能合约与去中心化生态构建全解析

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

一键美化PPT的AI工具怎么用?PPT自动美化全攻略!

职场工具箱

人工智能 效率工具 PPT AIGC AI生成PPT

【双周会】就在今晚,Apache SeaTunnel Community Call 会议通知

Apache SeaTunnel

CrossOver玩游戏兼容性怎么样?CrossOver无法运行游戏怎么办?

阿拉灯神丁

游戏 兼容性测试 M2芯片 CrossOver Mac下载 Mac电脑软件

TON生态游戏开发全攻略:Web3超级入口的实战指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

CAD"二维多段线"出现原因

极客天地

AidaV2荣获全球DEAI黑客松奖项,革新去中心化金融生态

科技汇

为什么学习设计模式?

电子尖叫食人鱼

学习 设计模式

JavaScript AI 通义灵码 VSCode插件安装与功能详解

阿里云云效

JavaScript 云计算

安全的企业局域网聊天工具哪个好用?

BeeWorks

即时通讯 IM 私有化部署 企业级应用

AI 编程时代的核心驱动力 ——iVX 平台的创新实践与未来展望

代码制造者

无代码

CAD怎么进行图纸间复制粘贴

极客天地

Python并发总结:多线程、多进程与异步编程

不在线第一只蜗牛

Python Linux

JVM实战—频繁YGC和频繁FGC的后果

量贩潮汐·WholesaleTide

Java JVM

HTML 开发者的智能助手:通义灵码在 VSCode 中的应用

阿里巴巴云原生

html 前端

区块链智能合约的安全性

北京木奇移动技术有限公司

智能合约 区块链技术 软件外包公司

zk基础—zk实现分布式功能

不在线第一只蜗牛

分布式

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