再识CMS

目录

前言

CMS

介绍

特点

触发cms并发周期的条件

jvm大小总结 


前言

之前学习了java回收机制知识,包括各种回收算法,以及CMS与G1huishou 机制的对比。这一篇主要总结cms的知识,对cms回收机制的认识更加全面。

参考文章

 

CMS

介绍

cms 并发标记清除,有两种收集方式:并发,串行。初衷:为了减少GC的时间,从而提高系统的响应。

 

特点

需要cpu比较多,碎片化

cpu需求高:并发收集

ParallelRefProcEnabled是否开启并发引用处理

 碎片化:cms在清理的时候没有进行整理、压缩

UseCMSCompactAtFullCollection 与 CMSFullGCsBeforeCompaction 是搭配使用的;前者目前默认就是true了,也就是关键在后者上。

 

触发cms并发周期的条件

  • 阈值检查机制:老年代的使用空间达到某个阈值,JVM的默认值是92%(jdk1.5之前是68%,jdk1.6之后是92%),或者可以通过CMSInitiatingOccupancyFraction和UseCMSInitiatingOccupancyOnly两个参数来设置;这个参数的设置需要看应用场景,设置得太小,会导致CMS频繁发生,设置得太大,会导致过多的并发模式失败。例如

  • 动态检查机制:JVM会根据最近的回收历史,估算下一次老年代被耗尽的时间,快到这个时间的时候就启动一个并发周期。设置UseCMSInitiatingOccupancyOnly这个参数可以将这个特性关闭。4.CMS的并发收集周期会扫描哪些对象?会回收哪些对象?答:CMS的并发周期只会回收老年代的对象,但是在标记老年代的存活对象时,可能有些对象会被年轻代的对象引用,因此需要扫描整个堆的对象。

UseCMSInitiatingOccupancyOnly关闭CMS的动态检查机制,只通过预设的阈值来判断是否启动并发收集周期
CMSInitiatingOccupancyFraction老年代空间占用到多少的时候启动并发收集周期,跟UseCMSInitiatingOccupancyOnly一起使用

可以通过开启阈值检查机制进行控制

 

jvm大小总结 

Xmx和Xms大小比例,一般是1:1

因为避免GC后堆大小的调整带来的压力

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值