JVM垃圾回收(三)

3、CMS垃圾收集器

CMS全称Concurrent Mark Sweep,是一款并发的、使用标记-清除算法的垃圾回收期,该回收器是针对老年代垃圾回收的,通过参数
-XX:UseConMarkSweepGC进行设置的

在这里插入图片描述

  • 初始化标记(CMS-inital-mark),标记root,会导致STW;
  • 并发标记(CMS-concurrent-mark),与用户线程同时运行;
  • 预处理(CMS-concurrent-preclean),与用户线程同时运行;
  • 重新标记(CMS-remark),会导致STW;
  • 并发清除(CMS-concurrent-sweep),与用户线程同事运行
  • 调整堆大小,设置CMS在清理之后进行内存压缩,目的是清理内存中的碎片;
  • 并发重置状态等待下次CMS的触发(CMS-concurrent-reset),与用户线程同时运行;

3.1、运行测试

运行参数:-XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -Xms16m -Xmx16m

在这里插入图片描述
输出日志:

# 第一步:初始标记
[GC (CMS Initial Mark) [1 CMS-initial-mark: 7126K(10944K)] 7723K(15872K), 0.0010394 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 

# 第二步:并发标记
[CMS-concurrent-mark-start]
[CMS-concurrent-mark: 0.023/0.023 secs] [Times: user=0.03 sys=0.00, real=0.02 secs] 

# 第三步:预处理
[CMS-concurrent-preclean-start]
[CMS-concurrent-preclean: 0.000/0.000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 

# 第四步:重新标记
[GC (CMS Final Remark) [YG occupancy: 1193 K (4928 K)][Rescan (parallel) , 0.0006647 secs][weak refs processing, 0.0000627 secs][class unloading, 0.0004940 secs][scrub symbol table, 0.0007747 secs][scrub string table, 0.0004411 secs][1 CMS-remark: 7126K(10944K)] 8320K(15872K), 0.0026176 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] 

# 第五步:并发清理
[CMS-concurrent-sweep-start]
[CMS-concurrent-sweep: 0.007/0.007 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 

# 第六步:重置
[CMS-concurrent-reset-start]
[CMS-concurrent-reset: 0.000/0.000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

由以上日志信息,可以看出CMS的执行过程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值