为什么会有标记整理算法?
这是经历标记清除后的结果
会产生大量的内存碎片,堆内的空间是链式的,如果不进行整理,再次需要比较大块的空间的时候还是会内存不够,即时总量够,但内存不连续啊。所以需要标记整理后再使用。
标记整理过程
一般使用标记整理的都是存活率比较高的对象,通过复制来整理效率会比较低,所以通过移动的方式来整理
将所有的碎片进行左移,并在左移的过程中顺便清理这个节点周围空的数据节点。
标记整理分为两个步骤,标记和整理
- 首先同样是标记过程。
- 将未标记的对象(存活对象)进行左移,移动完成后清理边界外的内存。