hotspot 垃圾收集器

在我最近的博客文章“ 确定活动的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 :“启用增量垃圾收集器。 增量垃圾收集器(默认情况下处于关闭状态)将减少程序执行期间偶尔出现的长时间垃圾收集暂停。 增量垃圾收集器有时会与程序并发执行,在此期间将减少程序可用的处理器容量。”

-Xincgcjava文档状态的Java SE 8版本:“启用增量垃圾收集。 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的结果。

这些屏幕快照表明, 指定-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

hotspot 垃圾收集器

hotspot 垃圾收集器_HotSpot增量Java垃圾收集器相关推荐

  1. HotSpot增量Java垃圾收集器

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

  2. java 解析器_高性能Java解析器实现过程详解

    如果你没有指定数据或语言标准的或开源的Java解析器, 可能经常要用Java实现你自己的数据或语言解析器.或者,可能有很多解析器可选,但是要么太慢,要么太耗内存,或者没有你需要的特定功能.或者开源解析 ...

  3. 80070583类不存在_结合JVM源码谈Java类加载器

    一.前言 之前文章 加多:ClassLoader解惑​zhuanlan.zhihu.com 从Java层面讲解了Java类加载器的原理,这里我们结合JVM源码在稍微深入讲解下. 二.Java类加载器的 ...

  4. 再谈GC2:Java垃圾收集器与GC日志分析实践

    4. GC 算法(实现篇) - GC参考手册 2017年02月05日 23:58:36 阅读数:6862 您应该已经阅读了前面的章节: 垃圾收集简介 - GC参考手册 Java中的垃圾收集 - GC参 ...

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

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

  6. Java垃圾收集器与内存分配策略详解

    垃圾回收 垃圾Java对象的判断-可达性分析算法 从一系列GCRoots作为起始节点,根据引用关系向下搜索,搜索过程所走过的路径称为"引用链"(Reference Chain),没 ...

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

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

  8. 深入理解JVM(5) : Java垃圾收集器

    如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商.不同版本的虚拟机所提供的垃圾收集器都可能会有很大差 ...

  9. 67.Java垃圾收集机制\对象引用\垃圾对象的判定\垃圾收集算法\标记—清除算法\标记—整理算法\分代收集\垃圾收集器\性能调优

    67.Java垃圾收集机制 67.1.对象引用 67.2.垃圾对象的判定 67.3.垃圾收集算法 67.3.1.标记-清除算法 67.3.2.标记-整理算法 67.3.3.分代收集 67.4.垃圾收集 ...

最新文章

  1. java中的assert
  2. Vuejs自定义全局组件--loading
  3. vs code中使用Astyle排版C/C++代码
  4. linux系统让一个命令在后台运行,Linux——Linux后台运行命令详述
  5. 机器学习基础——RandomForest
  6. Python基础入门笔记(二)
  7. 如何把SAP CRM WebClient UI上某个字段高亮加粗显示
  8. 微型计算机继电器控制,可编程控制器与微机及继电器控制的区别 -解决方案-华强电子网...
  9. 想学AI开发很简单:只要你会复制粘贴
  10. html全局事件,HTML5全局属性和事件
  11. 机械设计:如何能看懂复杂机械图纸中的尺寸标注,赶快学起来
  12. 手动实现获取微信openid
  13. 系统集成项目管理工程师11《项目风险管理》
  14. 学python-当当发布2020程序员新态:左手Python,右手机器学习
  15. 英语表达技巧—委婉地表达消极,否定情感
  16. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 B. Tomb Raider(二进制枚举)
  17. 团队任务3:第一次冲刺-第三组梦之队
  18. 打开chm文件提示“已取消到该网页的导航”
  19. Ubuntu18.04下的音频录制和编辑软件Ardour及QjackCtl(jackd gui)
  20. 在Python里如何切分中文文本句子(分句)、英文文本分句(切分句子)

热门文章

  1. AT3860-[AGC020F]Arcs on a Circle【dp】
  2. POJ3734-Blocks【EGF】
  3. P7044-[MCOI-03]括号【组合数学】
  4. P4168-[Violet]蒲公英【分块】
  5. 2021“MINIEYE杯”中国大学生算法设计超级联赛(1)zoto(二维数颜色)
  6. 2017西安交大ACM小学期数论 [完全平方数]
  7. 动态规划训练17 [Super Jumping! Jumping! Jumping! HDU - 1087 ]
  8. 经典笔试编程题--Java实现
  9. Oracle入门(十二)之SQL的DDL
  10. vue中如何在地图中标点…