GC(6)、CMS收集器以及参数整理

作者: 编程界的小学生 | 来源:发表于2017-09-08 13:16 被阅读68次

一、CMS收集器(Concurrent Mark Sweep)
1、概念
CMS收集器是一种以获取最短回收停顿时间为目标的收集器。是一种基于“标记-清除”算法来实现的。

2、CMS步骤

  • (1)初始标记(CMS initial mark)
  • (2)并发标记(CMS concurrent mark)
  • (3)重新标记(CMS remark)
  • (4)并发清除(CMS concurrent sweep)
    其中(1)(3)两步骤仍然会发生Stop-The-World

3、每个步骤解释

  • (1)初始标记:仅仅只是标记一下GC Roots能直接关联到的对象,速度很快。
  • (2)并发标记:进行GC Roots Tracing(追踪)的过程,就是对无用对象进行标记。
  • (3)重新标记:为了修正并发标记期间用户程序继续运作而导致标记产生变动的那一部分的对象的标记记录。
  • (4)并发清除:清除无用(被标记的)对象。

4、图示
CMS收集器的内存回收过程是与用户线程一起并发执行的。

Paste_Image.png

5、优点
(1)并发收集
(2)尽可能降低停顿
真的是一个很优秀的垃圾收集器!

6、缺点
(1)开头就说了,是标记-清除算法,所以会产生很多碎片,导致连续大内存空间太少。
(2)清理不彻底。因为在清理阶段,用户线程还在运行,会产生新的垃圾,无法清理,只能等到下一次GC再清理。

二、G1收集器
G1是比较前沿的成果,目前不讲解。知道存在这个东西就行了,未来可能会替代CMS。

三、参数整理

-XX:+UseSerialGC:在新生代和老年代使用串行收集器
-XX:SurvivorRatio:设置eden区大小和survivior区大小的比例
-XX:NewRatio:新生代和老年代的比
-XX:+UseParNewGC:在新生代使用并行收集器
-XX:+UseParallelGC :新生代使用并行回收收集器
-XX:+UseParallelOldGC:老年代使用并行回收收集器
-XX:ParallelGCThreads:设置用于垃圾回收的线程数
-XX:+UseConcMarkSweepGC:新生代使用并行收集器,老年代使用CMS+串行收集器
-XX:ParallelCMSThreads:设定CMS的线程数量
-XX:CMSInitiatingOccupancyFraction:设置CMS收集器在老年代空间被使用多少后触发
-XX:+UseCMSCompactAtFullCollection:设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片的整理
-XX:CMSFullGCsBeforeCompaction:设定进行多少次CMS垃圾回收后,进行一次内存压缩
-XX:+CMSClassUnloadingEnabled:允许对类元数据进行回收
-XX:CMSInitiatingPermOccupancyFraction:当永久区占用率达到这一百分比时,启动CMS回收
-XX:UseCMSInitiatingOccupancyOnly:表示只在到达阀值的时候,才进行CMS回收

若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:


qrcode_for_gh_577b64e73701_258.jpg

相关文章

  • GC(6)、CMS收集器以及参数整理

    一、CMS收集器(Concurrent Mark Sweep)1、概念CMS收集器是一种以获取最短回收停顿时间为目...

  • JVM调优学习整理

    JVM参数的含义 并行收集器相关参数 CMS相关参数 辅助信息 GC性能方面的考虑对于GC的性能主要有2个方面的指...

  • JVM-GC(2)

    JVM-GC(2) 垃圾收集器 CMS收集器 CMS收集器是一种以获取最短回收停顿时间为目标的收集器。CMS收集器...

  • chapter-5 GC参数

    GC参数 1.堆的回顾 2.串行收集器 3.并行收集器 4.CMS收集器 5.Tomcat实例演示 堆的回顾

  • 4.垃圾回收器CMS的神话故事

    CMS收集器(并发)基于“标记-清除”算法实现的。结合参数设置GC后进行碎片整理。世界众生由造物主主宰,造物主委派...

  • 一文吃透JVM分代回收机制(以SerialGC为例)

    Java GC发展至今,已经推出了好几代收集器,包括Serial、ParNew、Parallel、CMS、G1以及...

  • JVM学习13·GC日志

    1.GC 常用参数 2.Parallel 常用参数 3.CMS 常用参数 -XX:+UseG1GC 启用CMS垃...

  • GC常用参数

    GC常用参数 Parallel常用参数 CMS常用参数

  • 6.HotSpot中的GC收集器简介

    目录 概述 新生代GC 老年代GC java789默认GC搭配 垃圾收集器相关参数总结 概述 整理归纳HotSpo...

  • 一文彻底搞懂 CMS GC 参数配置

    近期整理多个 HBase 集群的 JVM 参数,发现都是默认的 CMS GC 配置,如何调优 JVM 参数就成了一...

网友评论

    本文标题:GC(6)、CMS收集器以及参数整理

    本文链接:https://www.haomeiwen.com/subject/lisgjxtx.html