Oracle计划将ZGC项目提交给OpenJDK
根据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)关注我们。
Oracle计划将ZGC项目提交给OpenJDK相关推荐
- Oracle计划新的移动OpenJDK项目
Oravcle已经提出了一个致力于振兴移动Java状态的新项目的计划.如果被OpenJDK采纳,新的移动计划将会专注于将OpenJDK移植到流行的移动平台例如iOS.Android和Windows P ...
- Oracle 计划新的移动 OpenJDK 项目
Oracle已经提出了一个致力于振兴移动Java状态的新项目的计划.如果被OpenJDK采纳,新的移动计划将会专注于将OpenJDK移植到流行的移动平台例如iOS.Android和Windows Ph ...
- SSH框架连接Oracle的一个简单项目
SSH框架连接Oracle的一个简单项目 项目准备 知识准备 软件 实操 代码 页面展示 遇到的问题 项目准备 知识准备 下面是我一个新手对于本次项目的了解: 我们是使用spring整合struts2 ...
- 33岁想从头学做网页设计_从头开始设计字体-并在24小时内将其提交给Google字体...
33岁想从头学做网页设计 by James Barnard 詹姆斯·巴纳德(James Barnard) 从头开始设计字体-并在24小时内将其提交给Google字体 (Designing a font ...
- P6专题:P6核心技术(多级计划,单代号,项目组合,关键路径,赢得值等)
目录 引言 基于项目管理知识体系 单代号 多级计划和多层次计划 风险定性管理 计划定性分析 赢得值管理 组合管理 关键路径管理 模板应用管理 移动应用 引言 Oracle Primavera P6 软 ...
- hive 提交不到yarn_在Linux将MapReduce程序提交给YARN执行
什么是YARN,有什么作用 YARN(分布式运算资源调度系统) 我们知道我们的分布式文件存储系统HDFS,是将文件进行切块(默认128M).备份(3份)分布式的存储在集群的各个机器上的: 海量的数据需 ...
- oracle jdbctype null,Oracle数据库之springboot 项目mybatis plus 设置 jdbcTypeForNull
本文主要向大家介绍了Oracle数据库之springboot 项目mybatis plus 设置 jdbcTypeForNull,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. ...
- 把握三大计划 抓住ERP项目实施的灵魂
综观多家企业的ERP实施情况,笔者发现有一个比较大的误区,即都忽视了计划在工作中的作用.有些企业虽然意识到计划的重要性,但是在实际工作中会因为种种原因无法落实到实处.笔者认为,计划是ERP项目中的灵魂 ...
- 如何给开源项目提过 PR 呢?其实很简单
大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 源码共读群里有小伙伴聊到如何给开源项目提PR,所以今天分享这篇文章. 你有给开源的库或者框架提过 PR 吗? 如果 ...
最新文章
- 智能合约的核心思想、语法重点、编程模式、示例、规范及架构
- 用户操作-登录代码实现
- 报任安书文言现象_语文老师精心总结【文言文常考点】够你从初一用到初四!...
- HTML DOM content 属性
- CVPR 2020 Oral |目标检测+分割均实现SOTA!厦大提出协同学习网络
- iphone控制电脑_苹果远程控制电脑软件免费下载-超控Controlax(iPhone远程控制Windows)v1.1 最新版...
- java连不上mysql_eclipse连接不上mysql
- Debian9.5安装VNC并且配置vnc开机自启动
- 计算机存储信息的单位
- 概念梳理:C++中iostream头文件和命名空间的基础介绍和拓展内容
- 玩~成语接龙c++代码
- 程序包解析错误解决办法
- mshflexgrid如何删除当前鼠标选择的行,并且一并删除行所对应的数据库中的记录
- 从数学计算上分析人脑与电脑差异
- 【技术分享】Windows10下安装Nvidia显卡驱动及cuda和cudnn
- Liferay DXP数字体验平台,荣耀绽放:端对端的客户体验
- openlayers加载图片图层png,jpeg等
- java百万级大数据量导出
- 如何反制互联网精准广告定向
- HTML (Hyper Text Markup Language)超文本标记语言