博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle计划将ZGC项目提交给OpenJDK
阅读量:6690 次
发布时间:2019-06-25

本文共 1283 字,大约阅读时间需要 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的垃圾收集项目产生竞争,因为后者也是以大容量堆的应用为关注对象。

\\

感谢对本文的审校。

\

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

转载地址:http://cuuoo.baihongyu.com/

你可能感兴趣的文章
apache配置转发到后端的tomcat/jira
查看>>
Elasticsearch过滤与聚合的先后顺序java实现
查看>>
记录linux设置定时执行python脚本以及输出到指定文件
查看>>
我的友情链接
查看>>
Hadoop 2.0(YARN/HDFS)学习资料汇总
查看>>
15.汉字的繁简转换 C#
查看>>
Confluence 6 如何考虑设置一个空间的主页
查看>>
hadoop命令执行hbase应用jar包时的环境变量加载问题
查看>>
AndroidTV 网络机顶盒 Wi-Fi设置
查看>>
CentOS 6.8 编译安装MySQL5.5.32 (二 多实例)
查看>>
bat等大公司常考java多线程面试题
查看>>
为centos 5.5 x86设置双网卡bonding
查看>>
在 Xcode 里编译运行 Python 代码
查看>>
什么是License
查看>>
英文单词记忆( 积累中 )
查看>>
Android 无闪烁启动画面程序源码
查看>>
基于uml的面向对象的概要设计
查看>>
用 PHP 读取文件的正确方法
查看>>
Authentication and Integration 第三篇:Oracle LDAP介绍
查看>>
我的友情链接
查看>>