1.标记-清除算法:
首先标记出所有需要回收的对象,在标记完成后统一进行回收。
特点:标记、清除两个过程的效率都不高,出现碎片。
2.复制算法:
它将可用的内存划分为大小相等的两块,每次只使用其中的一块,当这一块用完了,就将还存活的对象复制到另一块上面,然后把这块内存一次性清理掉。
特点:代价高、存活率高时效率较低。
改进:调整分配比例,例如IBM把内存分为一块Eden和两块较小的Survivor空间,比为8:1:1.
3.标记-整理算法:
过程与标记-清除算法一样,后续进行存活对象的移动。
4.分代收集算法:
把内存分为新生代和老年代,新生代采用复制算法,老年代采用“标记-清理“或者”标记-整理”算法。