写点什么

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

评论 1 条评论

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

月薪20+的Android面试都问些什么?,android实战开发记账本app视频

android 程序员 移动开发

来自程序员的感叹:我怎么就没有阿里,腾讯,安卓内存监控悬浮窗

android 程序员 移动开发

浅谈Android热更新的前因后果 _ Android ,Android面试基础知识

android 程序员 移动开发

最全-BAT-大厂Java和Android面试题整理!为接下来秋招金九银十做准备(聪明人已经收藏了

android 程序员 移动开发

曾经身为一名Android面试官的我,如今去别的公司面试被虐成狗!我也有今天7

android 程序员 移动开发

最好用的安卓按钮,含泪狂刷Android基础面试118题

android 程序员 移动开发

春招结束,腾讯+字节,android移动开发基础案例教程答案

android 程序员 移动开发

某 Android 大牛 “凡尔赛”,Android-Camera内存问题剖析

android 程序员 移动开发

没有对象怎么面向对象编程呢?真让人头秃!,android音视频编解码

android 程序员 移动开发

浅谈ConcurrentHashMap,2021大厂Android面试题精选

android 程序员 移动开发

无意苦争春,一任群芳妒!看完这份2020年度大厂Android面试总结

android 程序员 移动开发

最新-Android-面试点梳理,我收藏了你呢?,事件分发机制怎么回答

android 程序员 移动开发

深入学习-Gradle-自动化构建技术(六)Gradle-插件平台化框架-ByteX-探秘之旅

android 程序员 移动开发

数据结构篇09、哈希表--简化版HashMap,一线互联网移动架构师360°全方面性能调优

android 程序员 移动开发

来自Android菜鸟的思考:普通公司的程序员技术跟大厂的差距在哪?怎样才能达到大厂技术水平

android 程序员 移动开发

最后再说一次!!不要在你的App启动界面设置SingleTask-SingleInstance

android 程序员 移动开发

深入探索编译插桩技术(四、ASM 探秘,二本学渣考研失败

android 程序员 移动开发

文字太多?控件太小?试试 TextView 的新特性 Autosizing 吧

android 程序员 移动开发

新鲜出炉的Android面试题,确定不来看看吗?还有超详细的答案解析哦

android 程序员 移动开发

注意-跳槽必看啊!2020BATJZ大厂面筋集合!(建议收藏),android开发网上购物app

android 程序员 移动开发

浅谈-Android-Handler,h5移动端开发面试题

android 程序员 移动开发

深入分析ConstraintLayout的原理及应用场景,万字总结

android 程序员 移动开发

深入浅出Android性能调优【全面深入易理解】,来一份全面的面试宝典练练手

android 程序员 移动开发

数据结构篇11、映射Map及其三种底层实现,android插件化框架

android 程序员 移动开发

普通程序员,三年成为年薪70w架构师,只因有了这些习惯

android 程序员 移动开发

最新 Android 热门开源项目公布,androidframework开发书籍

android 程序员 移动开发

没想到位图算法在Android RecyclerView中还可以这样应用!

android 程序员 移动开发

泛型使用到原理,2020-2021阿里巴巴安卓面试真题解析

android 程序员 移动开发

深入并发原理和大厂面试(二),kotlin协程的理解

android 程序员 移动开发

深入探索 Android 网络优化(三、网络优化篇,flutter页面跳转卡

android 程序员 移动开发

文档06-H264解码流程,android实战开发项目阅读器

android 程序员 移动开发

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