HotSpot增量Java垃圾收集器

在我最近的博客文章“ 确定活动的HotSpot垃圾收集器”中 ,我描述了可用于确定HotSpot JVM (Java进程)正在使用的垃圾收集器(当从命令行参数(标志) 中看不出来)时可以使用的不同方法。传递给Java启动器 。 对于重要的Java应用程序,我倾向于使用Java启动器显式指定适当的垃圾收集器标志,以免对使用哪个收集器产生任何疑问: -XX:+UseParallelGC ( 或 -XX:+UseParallelOldGC )用于并行/吞吐量收集器 , -XX:+UseConcMarkSweepGC用于并行标记扫描 (CMS)收集器, -XX:+UseG1GC用于垃圾优先垃圾收集器 , -XX:+UseSerialGC用于串行垃圾收集器 。

如果未明确指定所有垃圾收集器JVM标志,则虚拟机将选择垃圾收集器,并且可以使用JDK命令行工具jcmd或其相关的JMX MBean实现DiagnosticCommandMBean (通常通过JConsole)来标识VM选择了哪个垃圾收集器。 或VisualVM )。 在某些情况下,由于不存在我之前的列表中存在的特定HotSpot JVM标志,所以指定了特定的垃圾收集器。 在本文中,我将简要介绍以下内容之一: -Xincgc

Oracle为Java启动器java提供的JDK工具和实用程序文档简要描述了-Xincgc 。 Java SE 6的java可执行文件和Java SE 7的java可执行文件的-Xincgc描述了-Xincgc :“启用增量垃圾收集器。 增量垃圾收集器(默认情况下处于关闭状态)将减少程序执行期间偶尔出现的长时间垃圾收集暂停。 增量垃圾收集器有时会与程序同时执行,在此期间将减少程序可用的处理器容量。”

的Java SE 8的版本中java的文档状态-Xincgc :“启用增量垃圾收集。 此选项在JDK 8中已弃用,无法替代。” 从Java 8开始不推荐使用增量收集器,这在《 JDK 8兼容性指南 》的“ 不推荐使用的API ”部分中得到了确认:“ -Xincgc选项不推荐使用。” 有关为什么在JDK 8中不赞成使用此垃圾收集组合和其他垃圾收集组合的更多详细信息,请参见JEP 173 (“淘汰一些很少使用的GC组合”)和JEP 214 (“删除JDK 8中不推荐使用的GC组合”)。

看来-Xincgc在JDK 8之后将不可用。对于支持-Xincgc的JVM版本,一个问题可能是运行增量式垃圾收集器对于垃圾收集器而言意味着什么。 先前参考的《 JDK 8兼容性指南 》指出,“增量CMS”是现已弃用的“垃圾收集器组合”之一。 还已经指出 ,Java 6中的“ -Xincgc简单地转换”为“ -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode 。 接下来的两个屏幕快照演示了Java 8中小型,简单的Java应用程序的情况。 第一个快照描述了在指定和不指定-Xincgc情况下相同可执行JAR( -jar )的运行。 第二个快照描述了为同一应用程序选择的不同VM选择的命令行标志,这些标志是指定或不指定-Xincgc的结果。

20160507-正在运行JavaProcessesWithAndWithoutXincgc

20160507-垃圾收集器标记有和无Xincgc

这些屏幕快照表明, 指定-Xincgc时,用于此简单可执行JAR应用程序的Java 8 VM选择并行/吞吐量收集器( -XX:+UseParallelGC ),并选择带有附加标志的CMS收集器( -XX:+UseConcMarkSweepGC-XX:+CMSIncrementalMode-Xincgc明确规定。 还值得指出的是,当使用-Xincgc运行Java 8 HotSpot Java启动器时,会显示一条弃用警告消息(我已强调 ):“ Java HotSpot(TM)64位服务器VM警告:使用增量CMS是不推荐使用,可能会在将来的版本中删除。”

我认为值得在与垃圾回收相关的不赞成使用的JVM标志上发布,因为可以从此讨论中获得一些高级观察:

  • 除了直接指定特定垃圾收集器的HotSpot VM标志外,其他标志也可以暗示垃圾收集器。
  • jcmd工具不仅在不提供JVM标志的情况下,而且在使用暗示特定收集器的标志的情况下(例如-Xincgc表示CMS收集器),可用于标识使用哪个垃圾收集器。 。
  • 增量CMS收集器即将消失。 任何考虑升级到Java 9的人都可能会审慎地检查其应用程序使用的VM标志,以识别当前正在使用增量CMS收集器( -Xincgc )的情况。 如果在Java 8上运行,则应该已经有弃用警告,如本文所展示。
  • 这提醒我们,尽管Java和JVM在很大程度上仍是向后兼容的语言和平台,但是某些功能和特性有时会被删除(通常是很少使用的东西或存在严重缺陷的东西)。

翻译自: https://www.javacodegeeks.com/2016/05/hotspot-incremental-java-garbage-collector.html

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

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

相关文章

修改已存在用户的所属组(usermod用法)

转载自:http://blog.163.com/zhzh_lin/blog/static/40538715200771503221224/ 修改使用者帐号 名称 usermod - 修 改 使 用 者 帐 号 语法 usermod [-c comment] [-d home_dir [ -m]] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,.…

c语言如何查找空指针,c语言中的空指针

#include#include#define SAFE_MALLOC(n) safe_malloc(n)#define SAFE_FREE(p)safe_free((int**)(&(p)))//将变量指针赋值为空指针//若变量本身为空,则提示出现野指针void safe_free(int **p){if(*p){free(*p);*p NULL;printf("这不是野指针!!!,好开心. _…

eclipse pmd使用_使用您自己的规则在Eclipse中自定义PMD

eclipse pmd使用PMD是非常好的Java代码扫描程序,可帮助您避免潜在的编程问题。 它可以轻松扩展以满足您的需求,并且本文将为您带来与JPA的Enumerated注释用法相关的自定义PMD规则的简单示例。 在继续阅读之前,您应该检查我以前的文章之一-JPA…

linux bash source 0,linux中BASH_SOURCE[0](转)

在C/C中,__FUNCTION__常量记录当前函数的名称。有时候,在日志输出的时候包含这些信息是非常有用的。而在Bash中,同样有这样一个常量FUNCNAME,但是有一点区别是,它是一个数组而非字符串,其中数组的第一个元素…

如何将自定义数据源集成到Apache Spark中

如今,流数据是一个热门话题,而Apache Spark是出色的流框架。 在此博客文章中,我将向您展示如何将自定义数据源集成到Spark中。 Spark Streaming使我们能够从各种来源进行流传输,同时使用相同的简洁API访问数据流,执行…

linux用户管理练习题

转载自:http://blog.sina.com.cn/s/blog_6a8d2f120100qiyj.html 1)新建一个组group1,新建一个系统组group2 参考答案: groupadd group1 groupadd -r group2 cat /etc/group /etc/gshadow|grep group[1-2] 2)更改组group2的GID为103,更改组名为grouptest 参考答案:…

闪念-许久未来一切没变

好久好久没来逛社区了,前几天有空登录进来看看,好多以前的老朋友都还在,甚是欣慰。有种亲切的感觉,时间真的很快,差不多有3-4年没来玩社区了。经历了两家互联网行业级Top3的公司一度没有时间逛社区,玩社区交…

C语言麻将递归,C++数据结构与算法——麻将胡牌算法(二:完全胡牌算法)

虽然单花色胡牌算法面试时写出来了,但是完整的胡牌算法却没有写,既然遇到了,秉着不抛弃不放弃的精神,当然不能原谅懒惰的自己了。下面这篇为一个完整的胡牌算法。胡牌规则除了以下几点,其余与单花色胡牌规则一致&#…

第一行代码-第一章

模拟器和真机切换 点击app选择Configuration,Target选择USB设备或模拟器 真机不能获取debug日志 以360手机为例 1.拨号界面输入“*20121220#”,进入工程模式,点击日志输出等级。 2.修改以下选项 Log print enable 选 enable Java log level 选…

啊哈c语言推箱子小游戏,啊哈C入门版学完了,现发推箱子源代码~

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼该推箱子拥有对成绩的记录功能,因此,请挑战自己的最少步数吧!源代码如下:#include #include int main(){system("color 0a");char a[9][11]{" ###### "," # ###",…

AIDA64制作机箱副屏/性能监控屏, 刷新慢问题

AIDA64制作机箱副屏/性能监控屏, 刷新慢问题 手上有闲置的手机/平板, 非闲置也行, 毕竟也没人边刷手机边打游戏吧AIDA64可以监控大多数参数, 放到一些酷炫的LCD模板上, 通过手机/平板等的浏览器就可访问这个页面, 实现无线监控 在网上找一个AIDA64, 安装文件-设置-LCD找到Rem…

javaone_JavaOne 2012:Java策略主题演讲和IBM主题演讲

javaone与 JavaOne 2010 相似,我对JavaOne 2012有了一个粗略的起点。由于“计算机和打印机技术上的困难”,办理登机手续的人花了70分钟为我提供JavaOne徽章。 尽管我不是世界上最有耐心的人,但比等待更令人失望的是,我错过了参加“…

常用正则表达式(?i)忽略字母的大小写!

转载自:http://blog.csdn.net/iwanttoknow7/article/details/5773285 1。^/d$  //匹配非负整数(正整数 0) 2 。 ^ [ 0 - 9 ] * [ 1 - 9 ][ 0 - 9 ] * $   // 匹配正整数 3 。 ^ (( - /d) | ( 0))$   // 匹配非正整数(负…

内存刷新机制

red log buffer、data buffer、binlog cache。在O和M中,讲究日志先行策略,就是一条DML语句进入数据库之后,都会先写日志,再写数据文件。 1.red log, 重做日志文件,用于记录事务操作的变化,记录的…

android 字符串对齐,android – 使用Spanable String对齐ImageSpan

我知道有很多相同类型的问题可供使用,我尝试了很多解决方案,但所有这些问题都达不到我的要求.我的问题是我必须在包含Spanable字符串和Imagespan的文本之间添加动态行间距,但是当我添加行间距时,文本和图像的对齐会变形.我已经尝试了Stackoverflow上几乎所有可用的解决方案,如t…

如何将JBoss HR员工奖励项目放入云端

我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 我们从头到尾讨论了各个层,但尚未为您提供除Red Hat Container Development Kit(CDK)之外的任何应用程序开发工具。 到目前为止,您所拥有…

用JIRA管理你的项目

https://blog.csdn.net/gaowenhui2008/article/details/70241657 (一) JIRA环境搭建 转载于:https://www.cnblogs.com/eustoma/p/9637509.html

ArcGIS编辑操作的常用快捷键一览表

在ArcMap中,快捷键与一些编辑工具和命令相关联。使用快捷键能使编辑工作更加快捷有效,总结如下: 一、公共快捷键(对所有编辑工具有效): Z:放大 X:缩小 C:漫游 V&#xff…

javaone_JavaOne 2012:使用HTML5和Java构建移动应用程序

javaone我返回了Parc 55 (任务会议室),观看Max Katz的( Exadel开发人员关系)“使用HTML5和Java构建移动应用程序” Bird-of-Feather(BoF)演示文稿。 具体来说,Katz在Tiggzi &#xf…

android recyclerview 横向item 宽度,RecyclerView的item宽度不能全屏显示及线性布局与grid布局切换混乱解决方法...

1.RecyclerView的Item宽度不能全屏显示出现这种的原因有两种:1.第一种是在adapter中加载inflater时parent传入为null2.如果第一种不行,第二种原因就是在RecyclerView外随意加一层布局即可充满解决方法,在onCreateViewHolder按照如下修改&…