(1)标记-清除(Mark-Sweep)算法:先标记回收的对象,再清除。缺点:效率问题,标记、清除的效率不高;空间问题,产生大量不连续的内存碎片。 (2)复制(Copying)算法:把内存划分为两个大小相等的区域,把一个区存活的对象移到另一个区域,再把这个区域整个清除。 优势:实现简单、运行高效;缺点:内存为原来的一半。 (另一种是依据新生代的对象98%存活率不高,内存可按8:1:1分三块,90%能够用。不过若是不够,须借用老年代的内存了) (3)标记-整理(Mark-Compact)算法:前半步骤按Mark-Sweep的步骤,后来先将存活的对象移到一端,再清除回收对象。 (4)分代收集(Generational Collection)算法: 根据对象的存活周期划份内存。通常为新生代和老年代。新生用Copying算法而老年代用Mark-Compact或Mark-Sweep算法。