CMS垃圾回收器与G1垃圾回收器
先上一张图
CMS基本介绍
cms垃圾回收器作用于老年代,采用标记清除算法,新生代回收配对的是ParNew,以最短停顿时间为目标,其回收主要经过初始标记,并发标记,重新标记,并发回收 4个阶段,下面来简单介绍下4个阶段所做的事情。
- 初始标记:暂停所有用户线程,初始标记阶段只标记对与GCRoots直接关联的对象,所以暂停时间很短。
- 并发标记:这一阶段根据与GCRoots直接关联的对象进行可达性分析,耗时较长,与用户线程同时进行。
- 重新标记:暂停所有用户线程,主要处理并发标记阶段用户线程运行导致标记产生变动的那一部分对象,时间比初始标记稍长。
- 并发清除:与用户线程一起运行,根据标记回收对象。
CMS的适用场景及问题
- CPU敏感:CMS采用并发收集的方式,当cpu不足4核时,对用户线程影响较大。
- 内存碎片:采用标记清除算法,所以会产生内存碎片。 <