CMS垃圾收集器 原理
时间: 2023-10-27 09:40:05 浏览: 118
CMS垃圾收集器1
CMS(Concurrent Mark Sweep)是一种基于标记-清除(Mark-Sweep)算法的垃圾收集器,它的主要目标是在尽可能短的时间内完成垃圾回收,以减少应用程序的停顿时间。
CMS的工作原理如下:
1. 初始标记(Initial Mark):该阶段会标记出所有直接与根对象相关的对象,并标记这些对象的标记位为“已使用”。
2. 并发标记(Concurrent Mark):该阶段会标记出所有与根对象间接相关的对象,并标记这些对象的标记位为“已使用”。该阶段和应用程序并发执行,不会阻塞应用程序的运行。
3. 重新标记(Remark):该阶段会标记在并发标记期间被修改的对象,并标记这些对象的标记位为“已使用”。
4. 并发清除(Concurrent Sweep):该阶段会清除所有未被标记的对象,并将它们添加到空闲列表中以便后续分配。该阶段和应用程序并发执行,不会阻塞应用程序的运行。
5. 重置(Reset):该阶段会将标记位设置为初始状态,为下一次垃圾回收做准备。
需要注意的是,CMS垃圾收集器在并发标记和并发清除时,会与应用程序共享CPU资源。因此,如果并发执行的时间过长,可能会对应用程序的性能造成一定的影响。
阅读全文