Java面试题更新 2026-08-03

Java 中的垃圾回收算法主要有哪些?请分别说明其基本原理。

考察说明

考查对 JVM 垃圾回收基础算法的掌握程度。

回答思路

  1. 【回答框架 1】垃圾回收算法主要解决如何识别和回收不再使用的对象。常见的算法包括标记-清除、复制、标记-整理和分代收集。
  2. 【回答框架 2】标记-清除算法分为标记和清除两个阶段,先标记出所有可达对象,然后统一回收未被标记的对象。缺点是会产生内存碎片,且标记和清除效率不高。
  3. 【回答框架 3】复制算法将内存分为大小相等的两块,每次只使用其中一块,回收时将存活对象复制到另一块,然后清空当前块。优点是实现简单、无碎片,但内存利用率低,适合存活对象少的场景。
  4. 【回答框架 4】标记-整理算法结合了标记和清除,标记后不直接清除,而是将所有存活对象向一端移动,然后清理边界以外的内存。解决了碎片问题,但移动对象需要额外开销。
  5. 【回答框架 5】分代收集算法根据对象存活周期将堆分为新生代和老年代,新生代使用复制算法,老年代使用标记-清除或标记-整理,以提高整体效率。
  6. 【关键点 1】标记-清除会产生内存碎片,效率不稳定。
  7. 【关键点 2】复制算法内存利用率低,适用于新生代。
  8. 【关键点 3】标记-整理避免碎片,但移动对象有开销。
  9. 【关键点 4】分代收集结合多种算法,是主流收集器的基础。
  10. 【易错点 1】不要混淆算法和具体收集器(如 CMS、G1)。
  11. 【易错点 2】复制算法并非所有场景都优于标记-清除。
  12. 【易错点 3】分代收集不是独立算法,而是组合策略。