Java CMS垃圾回收器 FGC 执行流程
Java CMS(Concurrent Mark and Sweep)垃圾回收器的执行流程如下:
-
初始标记阶段(Initial Mark):停止应用程序线程,标记所有从根对象可达的对象,并将它们标记为“已使用”。
-
并发标记阶段(Concurrent Mark):开启应用程序线程,同时标记所有从根对象不可达的对象,并将它们标记为“可回收”。
-
重新标记阶段(Remark):停止应用程序线程,重新扫描并标记在并发标记阶段中可能被修改的对象,并将它们标记为“已使用”。
-
并发清除阶段(Concurrent Sweep):开启应用程序线程,清除所有被标记为“可回收”的对象,将它们释放回堆空间。
-
重置阶段(Reset):停止应用程序线程,将CMS回收器的状态重置为初始状态,为下一次垃圾回收做准备。
Java CMS垃圾回收器的特点是在垃圾回收过程中可以与应用程序线程并发执行,从而减少了垃圾回收对应用程序性能的影响。但是,由于并发执行可能会导致垃圾回收器在执行过程中错过一些新分配的对象,导致堆空间不足,因此需要在执行过程中不断地进行优化和调整。
原文地址: https://www.cveoy.top/t/topic/fF5r 著作权归作者所有。请勿转载和采集!