垃圾收集算法
标记-清除算法
标记:首先标记出所有需要回收的对象。
清除:标记完成后统一回收所有被标记的对象。
缺点:
- 标记和清除两个过程的效率都不高。
- 标记清除后会产生大量不连续的内存碎片。碎片过多,而当要分配大对象时,会导致无法找到足够空间而提前触发一次垃圾收集动作。
复制算法
将内存按容量划分为大小相等的两块,每次只使用其中一块。当使用的那块内存即将耗尽时,将该块中存活的对象全部复制到另外一块内存中,并将已经使用过的内存一次性处理干净。
缺点:空间使用率较低,使得可用内存变为原来的一半。
标记-整理算法
标记过程与标记清理算法的过程一样,然后让存活对象都向一端移动,然后直接清理掉边界以外的内存。
分代收集算法
根据对象存活的周期不同将内存划分为几块,一般为新生代和老年代。然后根据不同的年代特点采用合适的收集算法。
一般而言,新生代采用复制法,而老年代采用标记清除法或标记整理法。