CMS总结

Posted vsop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMS总结相关的知识,希望对你有一定的参考价值。

过程

初始标记

从roots(例如:thread stack引用的对象,static对象),新生代对象,标记直接引用的老年代对象。

并发标记

利用初始标记阶段标记的对象,递归标记整个老年代。

该阶段与用户线程并行执行,产生变化的对象(新建,晋升,引用变化(不引用)等)所在的Card标记为Dirty。

重新标记

使用roots,新生代对象,仅标记老年代中Dirty Card中的对象。

并发清除

清除未标记的对象。

与用户线程并行执行。

 

调优

ConcurrentMode Failure

并发标记,并发清除都是与用户线程同时进行,可能会产生太多新对象,导致老年代空间不够。

出现ConcurrentMode Failure,退化为stop-the-world的serial old gc。

设置CMSInitiatingOccupancyFraction UseCMSInitiatingOccupancyOnly,调低触发cms的时机,预留足够空间,避免发生CMF。

CMSScavengeBeforeRemark

重新标记之前,进行一次young gc,减少source。

UseCMSCompactAtFullCollection & CMSFullGCsBeforeCompaction=5

开启碎片压缩,解决内存碎片问题。但不必每次都压缩,影响gc效率。

设置并发gc的线程数

 

 

技术图片

 

以上是关于CMS总结的主要内容,如果未能解决你的问题,请参考以下文章

CMS总结

帝国cms常用变量总结

empireCMS 帝国cms功能总结

JEECMS用法总结

java虚拟机面经总结

java基础入门课后答案文库,总结到位