1.标记-清除算法:
该算法有两步,首先是将需要清理的内存空间标记,第二步将是其清理。
优点是简单;缺点是效率不高,易造成内存碎片,使大对象无法存储。
2.复制算法:
将内存分为两块,一块用于使用,一块用于复制存活对象。优点是能够解决标记清理效率低的问题,减少内存碎片。缺点是该算法的内存利用率只有一半。minorGC一般都采用复制算法。
3标记-整理算法:
首先需要清理的内存空间标记,让存活对象向一端移动,最后统一回收。
优点:解决复制算法内存利用率低的问题吗,减少内存碎片。缺点:增加了存活对象移动的开销。majorGC一般采用这种算法。
4.分代算法:
以上三种算法的使用组合,根据新生代和老年代选用不同的算法,能够提高效率。通常是fullgc使用。