一文就懂Java虚拟机的CMS收集器原理及使用

1. CMS收集器概述

CMS收集器的设计目标是优先降低GC停顿时间相对地降低吞吐量),并且适合于有足够CPU资源提供给GC线程使用的那些应用程序。所以,如果你需要较短的GC停顿时间并且CPU数量充足,那么建议使用CMS收集器。例如,如果应用程序有较多长期存活的对象,那么老年代就会很大,导致GC暂停时间很长,并且有至少2个以上cpu核,那么适合使用CMS收集器。

2. 启用CMS收集器的方法

-XX:+UseConcMarkSweepGC

CMS收集器针对新生代和老年代分别独立回收(新生代minor gc,老年代major gc)。因为新生代空间较小,老年代空间较大,所以GC暂停时间大部分是老年代的major gc导致的。因此,CMS用多个垃圾回收线程来track老年代中的存活对象,并且这些线程与用户线程一起并发执行,这样可以减少major gc的停顿时间。

3. CMS的垃圾收集过程

CMS收集器的major gc过程是基于"Mark-Sweep回收算法"实现的,也就是说它分为Mark和Sweep两大阶段。因为Mark阶段最消耗时间,所以为了减少停顿,Mark阶段又被细分为Initial Mark,Concurrent Mark和Remark这3个标记阶段。因此,CMS的major gc过程总共分为4个阶段,如下图所示:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值