垃圾回收算法中,标记清理算法是说:
先标记垃圾,然后在执行垃圾清理,用空闲表记录空闲单元。
我的疑惑是:
既然已经确定是垃圾了,直接放到空闲表中,分配新对象的时候直接覆盖掉原数据不就可以了吗?为什么要“清理”?
是标记垃圾吗,我咋记得是标记可达对象
要做空间碎片的整理呀
标记清理算法的标记是标记非垃圾对象,cms采用的就是这种算法,采用的是三色标记法,即黑色,灰色,白色;在可达性分析之前所以对象都是白色的,在结束之后,有gcroots有直接或间接引用的会变成黑色或灰色,最后清除的是那些标记的白色垃圾