CMS垃圾回收器的用途
- 回收老年代的垃圾回收器
- 是并发执行的
CMS的原理
- 初始标记(STW):会标记与GCRoot之间联系的对象,注意:初始标记只会标记和GCRoot直接关联的对象,不会标记其他的
- 并发标记:会从这些直接与GCRoot关联的对象开始往下关联,关联出所有的存活对象,注意:是从与GCRoot直接关联的对象开始,不是从GCRoot开始,就是从【初始标记】中被标记的对象开始, 该过程和用户线程并发执行
- 重新标记(STW): 该步骤会重新扫描标记存活的对象,因为并发标记的过程中,可能也会产生垃圾对象或者新生对象,防止漏标,就要进行重新标记,该过程会挂起所有用户线程,STW。
- 并发清除: 清除死亡的对象,此过程和用户线程同时进行。
- 整理: 整理堆中的内存碎片,初始化数据结构吗,等待下一次的GC到来