写点什么

Oracle 计划将 ZGC 项目提交给 OpenJDK

  • 2017-11-08
  • 本文字数:1100 字

    阅读完需:约 4 分钟

根据 OpenJDK 的邮件列表,来自 Oracle 的 Per Liden 提议将内部开发的 Z 垃圾收集器开源,并在 OpenJDK 创建 ZGC 项目。

按照 OpenJDK 的指导原则,该项目将会托管不断开发完善的 Z 垃圾收集器,也被称为 ZGC。ZGC 项目针对低延迟和大规模堆的环境进行了优化。在 Oracle 内部,ZGC 一直处于开发状态,现在提议将其开源是为了扩大贡献者和用户之间的共识。按照 Per Liden 的说法,ZGC 的设计目标:

  • 处理 TB 量级的堆;
  • GC 时间不超过 10ms;
  • 相对于使用 G1,应用吞吐量的降低不超过 15%。

在一些著名的业界标准基准测试中,ZGC 已经达到或超过该目标了。ZGC 是一个并发、基于区域(region)、增量式压缩的收集器。Stop-The-World 阶段只会在根对象扫描(root scanning)阶段发生,这样的话 GC 暂停时间并不会随着堆和存活对象的数量而增加。

目前,ZGC 已经较为成熟和稳定,但是,还有一些工作要做。ZGC 在以下 GC 任务 / 阶段中会并发执行:

  • 标记(Marking)
  • 引用处理(Reference processing)
  • 重新分配集的选择(Relocation set selection)
  • 重分配 / 压缩(Relocation/Compaction)

现在,团队的主要工作是将其他的 GC 任务 / 阶段也变成并发执行,具体来讲就是弱根对象处理(Weak root processing,包括 StringTable 和 JNIWeakGlobalRefs)、类卸载(Class unloading)。

ZGC 的核心原则就是组合使用加载屏障(load barrier)与有色对象指针(colored object pointers,colored oops)。正是采用了这两项技术,ZGC 才能做到一些操作的并发执行,比如在 Java 应用运行的时候,进行对象位置的重新分配。从 Java 线程的角度来讲,加载 Java 对象中的引用域会受到加载屏障影响。除了对象地址以外,有色对象指针还会包含加载屏障所需的其他信息,用来决定 Java 线程在使用指针之前是否要采取一些额外的措施。例如,如果对象有可能会被重新分配地址的话,加载屏障会探测到这种情况并采取相应的措施。

Per Liden 认为,这种方式相对其他可选方案有一些优势,比如能够降低堆内存的损耗、减少和简化 GC 屏障以降低运行时的损耗,而且有色对象指针除了包含标记和重分配信息之外,还可以存储任何类型的信息,这样加载屏障就能基于这些信息采用相应的措施。

该项目初始代码会基于 JDK 10 的仓库以及最新的 ZGC 补丁集构建。JDK 10 父仓库的变化将会阶段性同步到 ZGC 中。

来自 InfoWorld 的观察认为,该项目可能会与Red Hat 的 Shenandoah 垃圾收集项目产生竞争,因为后者也是以大容量堆的应用为关注对象。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-11-08 18:001693

评论 1 条评论

发布
用户头像
GC 时间不超过 10ms; 应该是 GC暂定时间(STW)不超过10ms吧
2019-08-02 09:24
回复
没有更多了
发现更多内容

星环研发总监为你揭秘TDH8.0的前因后果 | TDH8.0 使用必读 3

星环科技

数据库 大数据 多模型数据

云原生Web服务框架ESA Restlight

安第斯智能云

云原生

【软件测试转型自动化测试001】Python环境搭建&语法规则

程序员阿沐

Python 软件测试 自动化测试 环境搭建 语法规则

Linux之ln命令

入门小站

Linux

统一预估引擎的设计与实现

安第斯智能云

算法 后端

场景背后见真章:银行数字化转型持续深入

CECBC

拍乐云 X 青云科技,预见数字自由,相约 CIC 2021 云计算峰会

拍乐云Pano

快手上线本地生活榜单:自媒体平台在逐步蚕食搜索引擎市场

石头IT视角

用户管理系统 - 用户权限设计从入门到精通

蒋川

后台开发 权限系统 权限管理 权限架构 用户管理

国内首家入驻统信系统的APaaS厂商

明道云

10分钟掌握Java性能分析诀窍

安第斯智能云

Java 后端

图解 JavaScript 数组方法

devpoint

ES6 array 7月日更

微信朋友圈复杂度分析

桂阳

11道高频React面试题及详解,另附有React面试题集合

前端依依

面试 大前端 React

如何抓住用户体验的关键时刻?

石云升

用户体验 关键时刻 7月日更

网络安全、Web安全、渗透测试之笔经面经总结

网络安全学海

面试 网络安全 信息安全 渗透测试 漏洞分析

第七届军博会圆满闭幕,数军科技多项成果获关注

科技热闻

供应链、产品溯源以及区块链所面临的巨大阻碍是什么?

CECBC

获取微信小程序页面路径方法

一颗小树

小程序 微信开发者工具 页面路径 微信开发者

🐬【MySQL技术导航】常用函数介绍(1)

洛神灬殇

MySQL 7月日更

产业区块链迎来新纪元,基础设施建设成核心命题

CECBC

oCPX简介——广告界的“无人驾驶”技术

安第斯智能云

算法

Java到底是什么?

卢卡多多

Java 入门 7月日更 Java入门

在外包做开发3年,为了进大厂,耗时半年,整合出25W字Java全栈面试题,这就是我的决心

Java架构师迁哥

模型端侧加速哪家强?一文揭秘百度EasyEdge平台技术内核

百度大脑

人工智能 深度学习 百度 飞桨

【IT运维】IT运维工作很无趣吗?很无聊吗?

行云管家

运维 多云管理平台 云管平台 IT运维

百度智能云人脸离线识别SDK再升级,优化复杂光线识别效果,急速通行无惧暗光

百度大脑

人脸识别 百度智能云

下一代人工智能:逻辑理解?物理理解?

安第斯智能云

人工智能

char+char=number

喵叔

7月日更

在线XML转CSV工具

入门小站

微信朋友圈高性能复杂度分析

木云先森

架构实战营

Oracle计划将ZGC项目提交给OpenJDK_Oracle_张卫滨_InfoQ精选文章