简单轻松搞定JVM----CMS收集器

CMS收集器

一、CMS收集器

CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。

在目前企业中后端用到Java时,很重视服务的响应速度,希望系统停顿的时间最短,从而能给用户带来良好的体验

从名字上就可以看出来“Mark Sweep”,CMS收集器是基于“标记-清楚”算法实现的。它的收集过程会比其他的收集器要复杂一些整体上分四个步骤:

  • 初始标记(CMS initial mark)
  • 并发标记(CMS concurrent mark)
  • 重新标记(CMS remark)
  • 并发清除(CMS concurrent sweep)
    在这里插入图片描述
其中初始和重新标记这个两个阶段需要暂停下

初始标记仅仅只是标记下GC Roots能直接关联到的对象,速度很快

并发标记阶段就是进行GC Roots Tracing的过程。

重新标记阶段就是为了修正并发标记期间,因用户程序继续运行而导致标记产生变动的那一部分对象的标记记录,这个阶段停顿的时间会比初始标记阶段稍长,但远比并发标记阶段短。

由于整个过程中耗时最长的是并发标记和并发清楚,收集器线程都可以和用户线程一起工作,所以总体上来说,CMS收集器内存回收过程是与用户线程一起并发地执行。老年代收集器。(新生代使用ParNew)

  • 优点:并发收集,停顿低
  • 缺点:产生大量的空间碎片,并发阶段会降低吞吐量

参数控制:-XX:+UseConcMarkSweepGC 使用CMS收集器
-XX:+ UseCMSCompactAtFullCollection Full GC后,进行一次碎片整理;整理过程是独占的,会引起停顿时间变长
-XX:+CMSFullGCsBeforeCompaction 设置进行几次Full GC后,进行一次碎片整理
-XX:ParallelCMSThreads 设定CMS的线程数量(一般情况约等于可用CPU数量)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值