JVM垃圾收集

垃圾收集算法

标记-清除算法

该算法主要有两个阶段:标记,清除。首先标记出全部须要回收的对象,标记完成后,回收(清除)全部被标记的对象;或标记全部不须要要回收的对象,而后回收全部未被标记的对象。
缺点:算法

  1. 执行效率不稳定,若是Java堆中包含大量须要清除的对象,这是必需要进行大量的标记和清除动做,致使两个过程的执行效率随着对象的数量蒸架而下降。
  2. 内存碎片化

标记-复制算法

将可用内存按照容量划分为两个大小一致的内存空间,每次仅使用其中一块,当一块内存用完后,将存活的对象移动到另外一块内存中,而后清理该内存。
缺点:spa

  1. 若是有大量对象存活,在复制时会产生大量的开销
  2. 可用内存缩小一半,空间浪费严重。

标记-整理算法

首先标记存活的对象,而后按照必定方式用存活的对象覆盖“死亡”对象所占用的内存空间以达到整理的目的。对象

各个垃圾收集器的关系

image.png