1. 标记-清除算法:
-
优点:
- 简单,容易实现。
- 不需要额外的空间。
-
缺点:
- 效率问题,标记和清除的过程都可能较慢。
- 产生大量的内存碎片,可能导致空间不连续。
2. 标记-复制算法:
-
优点:
- 解决了效率问题,只需要复制存活的对象。
- 不会产生碎片。
-
缺点:
- 需要额外的空间,将内存分为两块,一块用于存活对象,一块用于复制。
3. 标记-整理算法:
-
适用范围:
- 主要用于老年代的垃圾收集。
-
工作步骤:
- 标记存活对象。
- 将存活对象向一端移动。
- 清理边界外的内存。
4. 分代收集算法:
-
原理:
- 将内存划分为不同的代,一般分为新生代和老年代。
- 针对不同代使用不同的垃圾收集算法,以提高效率。
-
新生代垃圾收集:
- 一般使用标记-复制算法,因为新生代的对象生命周期短,适合这种算法。
-
老年代垃圾收集:
- 一般使用标记-清除或标记-整理算法,因为老年代的对象生命周期较长,适合这两种算法。
分代收集算法充分利用了不同代的特点,提高了垃圾收集的效率。在新生代中频繁发生垃圾回收,而老年代中发生的次数较少。