简述标记清除算法的流程

2021.03.13 08:03 468
阅读约 2 分钟

最早出现也是最基础的垃圾收集算法就是标记清除算法(mark-sweep)。字如其名,算法分为标记和清除两个阶段;

  • 标记需要清除的对象
  • 统一回收被标记的对象

之所以被称为最基础的垃圾回收算法,是因为后续的大多数算法都是以标记清除算法为基础,不断改正其缺点演进后得到的。

缺点

执行效率不稳定,如果java堆中包含大量需要被回收的对象,这时必须进行大量的标记清除动作,导致效率由于对象数量级的增长而降低。

内存空间碎片化。标记清楚之后会产生大量不连续的内存空间,当虚拟机需要分配较大的对象时而无法找到足够的连续内存空间,就不得不触发额外的垃圾回收动作。

标记清除算法示意图
字数:277 发布于 6 个月前
Copyright 2018-2021 Siques