垃圾收集算法

45 阅读1分钟

1. 标记-清除算法:

  • 优点:

    • 简单,容易实现。
    • 不需要额外的空间。
  • 缺点:

    • 效率问题,标记和清除的过程都可能较慢。
    • 产生大量的内存碎片,可能导致空间不连续。

2. 标记-复制算法:

  • 优点:

    • 解决了效率问题,只需要复制存活的对象。
    • 不会产生碎片。
  • 缺点:

    • 需要额外的空间,将内存分为两块,一块用于存活对象,一块用于复制。

3. 标记-整理算法:

  • 适用范围:

    • 主要用于老年代的垃圾收集。
  • 工作步骤:

    • 标记存活对象。
    • 将存活对象向一端移动。
    • 清理边界外的内存。

4. 分代收集算法:

  • 原理:

    • 将内存划分为不同的代,一般分为新生代和老年代。
    • 针对不同代使用不同的垃圾收集算法,以提高效率。
  • 新生代垃圾收集:

    • 一般使用标记-复制算法,因为新生代的对象生命周期短,适合这种算法。
  • 老年代垃圾收集:

    • 一般使用标记-清除或标记-整理算法,因为老年代的对象生命周期较长,适合这两种算法。

分代收集算法充分利用了不同代的特点,提高了垃圾收集的效率。在新生代中频繁发生垃圾回收,而老年代中发生的次数较少。