关于jvm垃圾回收算法的标记清理

垃圾回收算法中,标记清理算法是说:
先标记垃圾,然后在执行垃圾清理,用空闲表记录空闲单元。

我的疑惑是:
既然已经确定是垃圾了,直接放到空闲表中,分配新对象的时候直接覆盖掉原数据不就可以了吗?为什么要“清理”?

是标记垃圾吗,我咋记得是标记可达对象

要做空间碎片的整理呀

标记清理算法的标记是标记非垃圾对象,cms采用的就是这种算法,采用的是三色标记法,即黑色,灰色,白色;在可达性分析之前所以对象都是白色的,在结束之后,有gcroots有直接或间接引用的会变成黑色或灰色,最后清除的是那些标记的白色垃圾