CMS 收集器

CMS的整理

CMSHotSpot VMserver模式下的垃圾收集器,主要作用在OldYoung的回收主要还是使用Paraell收集器

CMS设计的目的是low pause time,垃圾收集过程包含4步:

<!--[if !supportLists]-->1.       <!--[endif]-->初始标记(并行,STW),对Old进行第一次标记,找出所以root 直接关联的live对象

<!--[if !supportLists]-->2.       <!--[endif]-->扫描(并行,不STW),扫描对象的graph,标记live对象

<!--[if !supportLists]-->3.       <!--[endif]-->remark(并行,STW),重新扫描root开始的对象graph,重新标记

<!--[if !supportLists]-->4.       <!--[endif]-->sweep(并行,不STW),清理,不压缩

<!--[if !supportLists]-->5.       <!--[endif]-->调整heap大小(并行),通常-xms-xmx一样大,不进行这步

CMS不压缩,会产生碎片,同时不能与Paraell NewYoung收集器)一起使用,对于Young回收效率较低

CMS的启动:根据参数-XX:CMSInitiatingOccupancyFraction=<N>N0-100的值,表示当heap内存使用达到多少的时候启动CMS

jdk8中,推荐配置:

-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode \

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps

 i-cms,在jdk8中存在,作用是可以增量的使用CMS,即在标记过程中,暂停回收进程,启动应用程序,之后在重新启动CMS线程,可以增量标记(不用重新开始),在jdk8i-cms将标记过程切分成一个个小块,在young回收的同时进行

相关命令行参数:

Option

Description

1.51.5之前

1.61.6之后

-XX:+CMSIncrementalMode

启动i-cms,同时-XX:+UseConcMarkSweepGC必须启用

disabled

disabled

-XX:+CMSIncrementalPacing

启动i-cms的节奏自调(根据jvm自己)

disabled

disabled

-XX:CMSIncrementalDutyCycle=<N>

minor回收时,允许i-cms运行时间占比(与CMSIncrementalPacing互斥)

50

10

-XX:CMSIncrementalDutyCycleMin=<N>

最小占用时间

10

0

-XX:CMSIncrementalSafetyFactor=<N>

用于i-cms自我调整的参数0-100

10

10

-XX:CMSIncrementalOffset=<N>

用于i-cms自我调整的参数0-100

0

0

-XX:CMSExpAvgFactor=<N>

用于i-cms自我调整的参数0-100

25

 

 

jdk1.5及之前的,推荐参数配置

-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode \
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps \
-XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycleMin=0
-XX:CMSIncrementalDutyCycle=10

 

trouble shooting

Concurrent Mode Failure:CMS的一种失败情况,是指在CMS完成之前,heapfull

OutOfMemoryError: 98%的时间被用来GC,只有2%的空间被释放的情况下,抛出

一般调整措施:

Step

Options

1. 调整启动CMS的因子

-XX:CMSIncrementalSafetyFactor=<N>

2. 调整最小启动间隔

-XX:CMSIncrementalDutyCycleMin=<N>

3. 不使用自动pacing,设置固定值

-XX:-CMSIncrementalPacing -XX:CMSIncrementalDutyCycle=<N>

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值