在针对JDK 9(2017/4/4)提出的JEP中 , Mark Reinhold写道JEP 291 (“弃用并发标记扫描(CMS)垃圾收集器”)是“已被放入“建议的在讨论和审查后,由所有者将其定位为目标”。 如果JEP 291一切顺利,它将针对JDK 9。

Reinhold在此消息中解释了为何在相对较晚的日期仍然可以将JEP 291定位到JDK 9:“ JEP 291仅需要微小的代码更改即可发出建议的警告消息。 首先,这是一个JEP,不是因为这是一个冒险的更改,而是要从长远来看使计划具有可见性,以删除CMS收集器。” 正如这些语句所指出的那样,JDK 9的针对性操作只是将并发标记扫描(CMS)收集器标记为已弃用,其想法是“从长远来看”将在某个时候将其删除。

尽管G1GC是JDK 9到JEP 248的默认垃圾收集器 ,但它并不总是适用于所有情况的最佳垃圾收集器。 甚至不建议使用CMS的提议在其“ 风险和假设 ”中也承认了这一点,其中指出:“对于某些应用程序,CMS非常适合,并且可能总是优于G1。”

关于OpenJDK jdk9-dev邮件列表的另一个最新讨论的标题为“ JEP 291:弃用并发标记扫描(CMS)垃圾收集器”,其中包含有关保留CMS的有趣论点。 Christoph Engelbert(Hazelcast) 写道 :“ CMS + ParNew是最常用的解决方案,并且许多应用程序都针对CMS的行为进行了优化。” 斯科特·帕尔默( Scott Palmer) 写道 ,“在他的特定应用中,“到目前为止,我们发现CMS收集器的最大暂停时间远低于G1。” Roman Kennke(RedHat) 补充说 ,“我说谈论删除CMS还为时过早。 而且,老实说,我什至质疑过时的举动。” Martijn Verburg(jClarity)表示:“我们现在不断被要求为客户调整G1,并且发现,即使使用我们最先进的分析(结合一些常见且更深奥的调整选项),我们也无法使G1达到在某些情况下优于CMS。 因此,一些客户已经恢复使用CMS,并且对CMS的未来(作为消费者)非常感兴趣。”

相同的讨论还包括不建议使用CMS的原因。 马克·雷因霍尔德(Mark Reinhold)的帖子指出,JEP 291是“去年夏天发布的”,并要求提供CMS维护者,但“到目前为止,没有人加紧。” 他总结说,“无论如何,Oracle确实打算在不远的将来停止维护CMS,如果没有人上任,我们将删除代码。”

Jeremy Manson(Google) 解释了G1GC和CMS当前情况的棘手问题:

我们决定,在尝试让G1做我们需要做的事情之后,以任何一种持续的方式支持CMS应该是最后的选择。 我们相信,收藏家越少越好。 在过去的几个月中,我们花了一些时间与Oracle的一些人员进行协调,并进行实验以查看G1是否有可行的前进方法。 我们找不到明显的东西。

这一切的主旨似乎是,许多应用程序仍依赖于CMS,并且这些应用程序将在JDK 9中显示已弃用警告。CMS垃圾收集器的未来似乎令人怀疑,但仅在JDK 9中才会弃用。何时真正删除CMS收集器似乎不太明显,但是我认为JDK 10是潜在的“未来主要发行版”,其中CMS支持可以终止。 再次引用曼森(Google)的话:“简短的是:我们仍然愿意为支持CMS做出贡献,但是我们要确保首先对G1进行了尽职调查。 我们一直认为JDK 10时间框架足够长,因此我们不必着急做出此决定。”

使用JDK9中的并发标记扫描垃圾收集器的Java应用程序似乎将看到有关CMS垃圾收集器已弃用的警告消息。 何时(或是否)根本无法使用CMS不太明显,而取决于谁愿意继续支持CMS。

翻译自: https://www.javacodegeeks.com/2017/04/java-garbage-collectors-will-g1gc-force-cms.html

Java垃圾收集器:G1GC何时将CMS强制退出?相关推荐

  1. java gc cms_Java垃圾收集器:G1GC何时将CMS强制退出?

    java gc cms 在针对JDK 9(2017/4/4)提出的JEP中 , Mark Reinhold写道JEP 291 ("弃用并发标记扫描(CMS)垃圾收集器")是&quo ...

  2. (七)Java垃圾收集器详解

    面试官问:Java垃圾收集器了解过多少,说一下 JVM 有哪些垃圾回收器?这些问题在你面试高级Java的时候经常会问到.本篇文章结合着[深入理解Java虚拟机]一书当中整理了本篇博客. 如果想要对收集 ...

  3. hotspot 垃圾收集器_HotSpot增量Java垃圾收集器

    hotspot 垃圾收集器 在我最近的博客文章" 确定活动的HotSpot垃圾收集器"中 ,我描述了可用于确定HotSpot JVM (Java进程)正在使用的垃圾收集器(当从命令 ...

  4. HotSpot增量Java垃圾收集器

    在我最近的博客文章" 确定活动的HotSpot垃圾收集器"中 ,我描述了可用于确定HotSpot JVM (Java进程)正在使用的垃圾收集器(当从命令行参数(标志) 中看不出来) ...

  5. JVM学习(十四):垃圾收集器(万字介绍CMS、G1)

    目录 一.垃圾收集器们 二.CMS(Concurrent-Mark-Sweep):低延迟 2.1 什么是CMS 2.2 CMS工作流程 2.3 详细描述 2.4 CMS的优缺点 2.4.1 优点 2. ...

  6. 【转】Java垃圾收集器

    原文链接 http://www.cnblogs.com/gw811/archive/2012/10/19/2730258.html#top Java垃圾收集器 概述 说起垃圾收集(Garbage Co ...

  7. Java 垃圾收集器

    堆内存示意图 垃圾收集算法 1.标记-清除算法 算法分为标记和清除两个阶段.标记出所有需要回收的对象,在标记完成后,统一回收. 缺点: 执行效率不稳定,若堆中有大量对象要被回收,这是必须进行大量标记和 ...

  8. java 垃圾收集器_JVM垃圾收集器详解

    说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物.事实上,GC的历史远比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态 ...

  9. 关于Java 垃圾收集器你应该知道这些

    如果Java虚拟机中标记清除算法.标记整理算法.复制算法.分代算法这些属于GC收集算法中的方法论,那么"GC收集器"则是这些方法论的具体实现. 概念准备 下面了解几个概念以帮助后面 ...

最新文章

  1. 安装Sublime Text 支持Go插件
  2. python文件操作二
  3. matlab y2=sin(3t)exp(-t/3);,Matlab-期末考试题库(共12套卷)
  4. Package Control 使用
  5. 在Ubuntu上用wine下载QQ,三种打开QQ的方法
  6. 游戏窗口化工具_仙剑奇侠传16珍藏版大合集(含各个版本和工具)
  7. 超全深度学习细粒度图像分析:项目、综述、教程一网打尽
  8. Windows:文件系统FAT32、NTFS和exFAT
  9. mac gif图片压缩
  10. 南京国际动漫游戏博览会 一日游(10-5)
  11. 微信安装旧版本方法(抓包必备)
  12. PWM常见输出方法及避坑指南
  13. 依图芯片服务器,依图推出云端AI芯片,1台机柜支撑起万路智能视频解析
  14. Python opencv:实现与自己同框对话的视频特效
  15. 天龙3d服务器维护,天龙八部3D4月6日维护服务器公告
  16. Spring控制Bean加载顺序
  17. 心java源代码_写了一个心形图案的java源代码,想发给朋友,朋友怎样才能像打开文档一样方便查看呢?...
  18. PyCharm/IDEA等工具使用git时设置不要提交系统文件,或者忽略提交文件夹
  19. 虚拟计算机组装的软件,如何使用虚拟光驱安装软件
  20. 清橙1485 Catch The Penguins 抓企鹅

热门文章

  1. MySQL nullif()函数
  2. 干货 | Tomcat 连接数与线程池详解
  3. Spring快速开启计划任务
  4. ajax读取文件未及时更新
  5. Servelt 中文乱码
  6. JAVA多线程总结(笔记)
  7. python获取当前进程id_从python进程名中获取进程id
  8. 多智能体强化学习_基于多智能体强化学习主宰星际争霸游戏
  9. mysql error 1045 的解决方法
  10. java继承中的 equals + hashCode+toString