垃圾收集算法
标记清除法
首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。
缺点:1.标记和清除两个过程效率不高;2.产生大量不连续的内存碎片。
复制算法
将内存划分为大小相等的两块,每次使用其中的一块,当一块内存用完后,就将存货对象复制到另一块上,然后将使用的内存一次清理。实现简单,运行高效。
缺点:内存缩小了一半。
标记整理算法
标记过程和标记清除算法相同,后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动然后直接清理掉端边界以外的内存。老年代使用。
分代收集算法
把java堆分成新生代和老年代,在新生代中,每次有大批对象死去,少量存活所以采用复制算法。老年代中因为对象存活率高/没有额外担保空间,就必须使用标记清除或者标记整理算法。