标记-复制算法
将内存分为大小相同的两块,每次只使用其中一块。标记存活的对象,当这一块的内存使用完后,将还存活的对象复制到另一块内存去,然后再将使用的内存清理掉。这样每次使用的是内存是一半。
标记-清除算法
两种方式:
1、标记存活的对象,统一回收所有未被标记的对象;(通常是这种情况)
2、标记要回收的对象,然后统一回收被标记的对象
存在明显的问题:
1、效率问题,如果需要标记的对象太多,效率太低。
2、空间问题,标记清除后会有大量不连续的碎片空间;
标记-整理算法
标记过程和标记-清除算法一样,但后续不是对可回收对象进行回收,而是让存活的对象向一端移动,存活对象替换掉可回收对象的内存,把存活对象内存空间整理成连续空间,然后清除掉其他可以回收的内存空间。