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

java gc cms

在针对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 gc cms

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ios 高德地图加载瓦片地图_IOS 高德地图 API 加载 WMS 服务

IOS 高德地图 API 加载 WMS 服务本文主要介绍通过自定义高德地图 MATileOverlay 接口,添加 WMS 服务到地图上。废话少说,先贴代码。代码自定义类 WMSTileOverlayUtil,继承自高德地图接口 MATileOverlay,主要重载函数:-…

Linux 命令之 iwlist 命令-从无线网卡获取更详细的无线信息

文章目录介绍常用选项命令示例介绍 iwlist 命令用于对 /proc/net/wireless 文件进行分析,得出无线网卡相关信息。 常用选项 选项说明scanning搜索当前无线网络frequen显示频道信息rate显示连接速度power显示电源模式txpower显示功耗retry显示重试连接次数(网络不…

drools dmn_DMN 1.1 XML:从建模到使用Drools 7.0的自动化

drools dmn我是一名自由顾问,但今天我是一名博士生。 本文的全球背景是企业架构(EA),它需要对企业进行建模。 由于EA的一个方面是业务流程建模,所以我使用BPMN已有数年之久,但是这种表示法并不十分适合表示…

矩阵期望 matlab,matlab中矩阵元素求和、求期望和均方差

在matlab中求一个矩阵中元素的和可以自己编写for循环来完成,这样比较方便,想求那些数据的和都可以做到,然而效率比较低,如果数据量大程序会跑好长时间。所以我们可以转而用matlab提供的sum函数。设M为一个矩阵,那么&am…

python默认字体大小_python – 如何设置PIL加载的默认字体的大小,使其适合我的8×8矩阵?...

我正在努力在88矩阵显示器上显示文本,而且我没有在我的BeagleBone上知道的.ttf文件.根据示例here,我应该能够说font ImageFont.load_default()而不是加载.ttf,但是,这显然不是指定字体的尺寸!有什么办法吗?或者,是否有一个地方你知道我可以在我的BBB版本…

Linux 命令之 tcpdump -- 监听网络流量

文章目录命令介绍参考文档命令介绍 tcpdump 命令是一款 sniffer 工具,是 Linux 上的抓包工具,嗅探器;它可以打印出所有经过网络接口的数据包的头信息。 tcpdump 命令工作时先要把网卡的工作模式切换到混杂模式。所以 tcpdump 命令需要以 ro…

java args_Java命令行界面(第2部分):args4j

java args在上一篇文章中 ,我研究了使用Apache Commons CLI在Java应用程序中解析命令行参数。 在本文中,我将使用另一个库args4j进行相同的操作。 args4j采用了一种不同于Commons CLI的方式来指定Java应用程序应期望的命令行参数。 尽管Commons CLI期望…

php点击后增加html元素,如何动态生成html元素以及为元素追加属性的方法介绍(附代码)...

本篇文章给大家分享的是关于如何动态生成html元素以及为元素追加属性的方法介绍(附代码),内容很不错,有需要的朋友可以参考一下,希望可以帮助到大家。动态生成HTML元素的方法有三种:第一种:document.createElement()创…

excel npoi 连接_Net操作Excel_NPOI(示例代码)

Npoi 简介1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet;行:Row;单元格Cell。4.忘了告诉大家npoi是做什么的了,npoi 能够读写几乎所有的Office 97-2003文件格式&#x…

apache camel_Apache Camel中的短重试与长重试

apache camel《骆驼设计模式》一书介绍了20种模式以及用于设计基于Apache Camel的集成解决方案的众多技巧和最佳实践。 每种模式都基于真实的用例,并提供了Camel特定的实现细节和最佳实践。 为了让您有这本书的感觉,以下是该书的重试模式摘录&#xff0c…

Linux 命令之 netstat -- 查看网络状态信息/显示网络状态

文章目录命令介绍常用选项参考示例(一)列出所有端口(二)列出所有 TCP 端口(三)列出所有 UDP 端口(四)只显示监听端口(五)只列出所有监听 tcp 端口&#xff08…

pyqt5 窗口设置圆角_Qt 的一些心得(背景设置,圆角,半透明)

一. 背景刷成黑色,前景色设为白色。 方法一、paltette方式,经测试,该方法不会影响到其他控件,推荐使用 QPalette bgpal palette();bgpal.setColor (QPalette::Background, QColor (0, 0 , 0, 255));//bgpal.setColor (QPalette::Background, Qt::transp…

java语言发展历史_Java编程语言的历史和未来

java语言发展历史通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用! 作为互联网上著名的编程语言 ,Java对人们如何浏览数字世界产生了深远的影响。 Java功能设置了用户对他们访问互联网的设…

Linux 命令之 Bang(!) 命令

命令说明!!执行上一条命令^foo^ bar把上一条命令里的foo替换为bar,并执行!wget重复执行最近的以wget开头的命令!wget:p仅打印最近的以wget开头的命令,不执行!n执行历史命令列表第n条命令,例如执行第三条命令:!3!-n执行历史命令列表…

matlab resample上采样,resample matlab实现

使用线性插值实现sample rate转换。function output simpleResample(input, inputfs, outputfs)inputLen length(input(:, 1));outputLen floor(inputLen * outputfs / inputfs);output zeros(outputLen, 1);timeStep inputfs / outputfs;curTime 1;integer 0;frac 0;f…

c matlab 精度,svm去优化参数C和g,输出正确率accuracy老是0

下面这个是测试的M文件%% Matlab神经网络43个案例分析%% 清空环境变量function chapter_GridSearchclose all;clear;clc;format compact;%% 数据提取% 载入测试数据wine,其中包含的数据为classnumber 3,wine:178*13的矩阵,wine_labes:178*1的列向量load wine.mat;% 画出测试数…

微服务pact测试框架_消费者驱动的Pact和Spring Boot测试

微服务pact测试框架最近,我的一位同事偶然发现了Pact.io ,我们目前的应用程序已扩展到 50多种服务,并且我们开始出现一些集成测试失败和脆弱的开发/验收测试环境。 因此,我们决定研究尝试与此相关的方法。 我从阅读开始&#xff…

用access建立一个试题库_Access考试题库(含答案).doc

所有单选题1、用Access创建的数据库文件,其扩展名是______。A:.adpB:.dbfC:.frmD:.mdb答案:D2、数据库系统的核心是______。A:数据模型B:数据库管理系统C:数据库D&#x…

Linux 命令之 arch --显示主机的硬件结构类型

文章目录介绍命令示例介绍 arch命令主要用于显示当前主机的硬件结构类型,arch命令输出的结果有:i386、i486、mips、alpha等。 此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 命令示例 显示当前主机硬件架构类…

mega5安装包_[MEGA DEAL] 2017年完全Java捆绑包(95%折扣)

mega5安装包深入了解编程奥德赛(58小时!),进入最常用的编程语言 嘿,怪胎, 本周,在我们的JCG Deals商店中 ,我们提供了一个极端的报价 。 我们提供的2017 Complete Java Bundle 仅…