Java CMS垃圾回收器 执行流程
Java CMS(Concurrent Mark-Sweep)垃圾回收器的执行流程如下:
-
初始标记:停止所有应用线程,标记出所有GC Roots能直接关联到的对象。
-
并发标记:与应用程序并发运行,标记出所有从GC Roots能到达的对象。
-
重新标记:停止所有应用线程,重新标记之前并发标记中可能发生变化的对象。
-
并发清除:与应用程序并发运行,清除所有不再使用的对象。
-
并发重置:与应用程序并发运行,重置CMS内部数据结构,为下一次GC做准备。
需要注意的是,Java CMS垃圾回收器是一种基于标记-清除算法的垃圾回收器,因此会存在内存碎片问题。为了解决内存碎片问题,Java CMS垃圾回收器采取了“空间碎片整理”策略,即在并发清除过程中,将存活对象移动到一起,以便形成连续的内存块,从而减少内存碎片。
原文地址: https://www.cveoy.top/t/topic/fF47 著作权归作者所有。请勿转载和采集!