标记清除
描述:根据可达标记存活对象,回收未标记对象。
缺点:容易产生一些内存碎片,导致后续无法划出连续大内存空间。
目标:主要是老年代
标记复制
描述:将内存分为两个区域,一半闲置,一半使用。当使用的快满时,标记可达存活对象移至闲置区,回收使用区域。
目标:主要是年轻代
缺点:我们可使用的内存只有一半,另一半闲置,所以会导致我们的内存闲置浪费,复制对象会增加处理时间。
标记整理
描述:和复制很相像,只不过是将标记后的对象整理到一块连续空间,其他对象就回收
缺点:会划出额外的内存空间存储标记信息,占用了一部分内存空间。
目标:主要是老年代
可达性算法
描述:根对象通常包括全局变量、活跃线程的栈上的对象引用以及常驻内存的静态对象等,从根对象开始递归找引用,有被其他对象持有的对象就是可达的。那就标记它。