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