提示:本文仅针对分代垃圾收集中复制算法、标记压缩和标记清除算法的讨论
文章目录
一、简述标记清除算法
1.1标记清除算法流程
(1)标记:采用三色标记法对全部对象进行标记
(2)清除:对每个GCRoot不可达对象进行删除
1.2标记清除优点
(1)因为在清除过程中不需要改变对象所在位置,因此可以做到GC线程和用户线程同时操作而不起冲突(CMS即利用这点达到最短STW)
(2)较为简单,不需要做整理操作,若存活对象较多的话,需要删除的对象比较少的情况下效率较高
1.3标记清除缺点
(1)在标记清除过程中,不能移动对象位置,因此可能导致内碎片频出。最终导致无可用空间进行分配。(因此使用标记清除的CMS算法使用Serial Old的标记压缩算法兜底)
(2)若当前存活对象较少,则仍单独针对某个对象进行清除不如整体清除效率高
二、简述标记压缩算法
2.1标记压缩算法流程
(1)标记:采用三色标记法对全部对象进行标记
(2)压缩:将GCRoot可达对象移动到空间一侧,将其余空间中对象删除(整体删除)。