根据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相关推荐

  1. Oracle计划新的移动OpenJDK项目

    Oravcle已经提出了一个致力于振兴移动Java状态的新项目的计划.如果被OpenJDK采纳,新的移动计划将会专注于将OpenJDK移植到流行的移动平台例如iOS.Android和Windows P ...

  2. Oracle 计划新的移动 OpenJDK 项目

    Oracle已经提出了一个致力于振兴移动Java状态的新项目的计划.如果被OpenJDK采纳,新的移动计划将会专注于将OpenJDK移植到流行的移动平台例如iOS.Android和Windows Ph ...

  3. SSH框架连接Oracle的一个简单项目

    SSH框架连接Oracle的一个简单项目 项目准备 知识准备 软件 实操 代码 页面展示 遇到的问题 项目准备 知识准备 下面是我一个新手对于本次项目的了解: 我们是使用spring整合struts2 ...

  4. 33岁想从头学做网页设计_从头开始设计字体-并在24小时内将其提交给Google字体...

    33岁想从头学做网页设计 by James Barnard 詹姆斯·巴纳德(James Barnard) 从头开始设计字体-并在24小时内将其提交给Google字体 (Designing a font ...

  5. P6专题:P6核心技术(多级计划,单代号,项目组合,关键路径,赢得值等)

    目录 引言 基于项目管理知识体系 单代号 多级计划和多层次计划 风险定性管理 计划定性分析 赢得值管理 组合管理 关键路径管理 模板应用管理 移动应用 引言 Oracle Primavera P6 软 ...

  6. hive 提交不到yarn_在Linux将MapReduce程序提交给YARN执行

    什么是YARN,有什么作用 YARN(分布式运算资源调度系统) 我们知道我们的分布式文件存储系统HDFS,是将文件进行切块(默认128M).备份(3份)分布式的存储在集群的各个机器上的: 海量的数据需 ...

  7. oracle jdbctype null,Oracle数据库之springboot 项目mybatis plus 设置 jdbcTypeForNull

    本文主要向大家介绍了Oracle数据库之springboot 项目mybatis plus 设置 jdbcTypeForNull,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. ...

  8. 把握三大计划 抓住ERP项目实施的灵魂

    综观多家企业的ERP实施情况,笔者发现有一个比较大的误区,即都忽视了计划在工作中的作用.有些企业虽然意识到计划的重要性,但是在实际工作中会因为种种原因无法落实到实处.笔者认为,计划是ERP项目中的灵魂 ...

  9. 如何给开源项目提过 PR 呢?其实很简单

    大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 源码共读群里有小伙伴聊到如何给开源项目提PR,所以今天分享这篇文章. 你有给开源的库或者框架提过 PR 吗? 如果 ...

最新文章

  1. 智能合约的核心思想、语法重点、编程模式、示例、规范及架构
  2. 用户操作-登录代码实现
  3. 报任安书文言现象_语文老师精心总结【文言文常考点】够你从初一用到初四!...
  4. HTML DOM content 属性
  5. CVPR 2020 Oral |目标检测+分割均实现SOTA!厦大提出协同学习网络
  6. iphone控制电脑_苹果远程控制电脑软件免费下载-超控Controlax(iPhone远程控制Windows)v1.1 最新版...
  7. java连不上mysql_eclipse连接不上mysql
  8. Debian9.5安装VNC并且配置vnc开机自启动
  9. 计算机存储信息的单位
  10. 概念梳理:C++中iostream头文件和命名空间的基础介绍和拓展内容
  11. 玩~成语接龙c++代码
  12. 程序包解析错误解决办法
  13. mshflexgrid如何删除当前鼠标选择的行,并且一并删除行所对应的数据库中的记录
  14. 从数学计算上分析人脑与电脑差异
  15. 【技术分享】Windows10下安装Nvidia显卡驱动及cuda和cudnn
  16. Liferay DXP数字体验平台,荣耀绽放:端对端的客户体验
  17. openlayers加载图片图层png,jpeg等
  18. java百万级大数据量导出
  19. 如何反制互联网精准广告定向
  20. HTML (Hyper Text Markup Language)超文本标记语言

热门文章

  1. 利用OpenSSH实现基于秘钥的认证
  2. javascript构造可以上传文件的form表单(通过js修改enctype)
  3. 迷茫的不是青春,是你们回望青春时失焦的眼神。
  4. 初始化列表的使用(十五)
  5. 初探JavaScript魅力1
  6. linux 下使用crontab 定时打包日志并删除已被打包的日志
  7. hibnate 创建表的时候type=innodb报错
  8. nginx lua 安装spdy
  9. C语言课程设计—图书管理系统
  10. Oracle数据库链Database links