MST

星途 面试题库

面试题:Java垃圾回收机制中常见的垃圾回收算法有哪些,并简要说明其工作原理

请列举Java垃圾回收机制里常见的垃圾回收算法,如标记-清除算法、复制算法、标记-整理算法等,并对每个算法的工作原理进行简要阐述。
31.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

标记 - 清除算法

  1. 工作原理
    • 标记阶段:从根对象集合(如栈中的局部变量、静态变量等引用)出发,遍历所有对象,标记所有被引用的对象。
    • 清除阶段:遍历堆内存,回收所有未被标记的对象,即垃圾对象,释放它们占用的内存空间。

复制算法

  1. 工作原理
    • 将可用内存按容量划分为大小相等的两块,每次只使用其中一块。
    • 当这一块内存用完时,就将还存活的对象复制到另一块上面,然后把已使用过的内存空间一次性清理掉。

标记 - 整理算法

  1. 工作原理
    • 标记阶段:与标记 - 清除算法的标记阶段相同,从根对象出发,标记所有存活的对象。
    • 整理阶段:将所有存活的对象向一端移动,然后直接清理掉边界以外的内存,使得存活对象占用的内存是连续的,避免产生内存碎片。

分代收集算法

  1. 工作原理
    • 根据对象存活周期的不同将内存划分为几块,一般把Java堆分为新生代和老年代。
    • 新生代中对象朝生夕灭,使用复制算法,因为存活对象少,复制成本低。
    • 老年代中对象存活率高,使用标记 - 清除或标记 - 整理算法,根据具体情况选择,以减少内存移动带来的开销。