MST

星途 面试题库

面试题:Ruby垃圾回收机制基础

请简要描述Ruby垃圾回收机制中标记 - 清除算法的基本工作原理,并说明在Ruby中哪些对象可能会被垃圾回收机制识别为垃圾对象。
27.9万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试

标记 - 清除算法基本工作原理

  1. 标记阶段
    • 从根对象集合开始遍历。在Ruby中,根对象包括全局变量、局部变量、方法参数等引用的对象。
    • 垃圾回收器沿着这些根对象的引用链,递归地标记所有可以从根对象访问到的对象。这些被标记的对象是“存活”的对象。
  2. 清除阶段
    • 标记完成后,垃圾回收器会遍历整个堆内存,寻找所有未被标记的对象。
    • 这些未被标记的对象被认定为垃圾对象,垃圾回收器会回收它们所占用的内存空间,将这些内存归还给堆,以便后续重新分配使用。

可能被识别为垃圾对象的情况

  1. 无任何引用的对象:当一个对象没有任何变量(包括全局变量、局部变量等)引用它时,从根对象无法访问到该对象,它就可能会被垃圾回收机制识别为垃圾对象。例如,在方法内部创建的局部对象,当方法执行完毕,该局部对象的引用超出作用域消失,如果没有其他地方引用这个对象,它就符合垃圾对象的条件。
  2. 循环引用但不可达根对象的对象组:虽然对象之间存在循环引用,但如果整个循环引用的对象组从根对象无法访问到,那么这组对象也会被视为垃圾对象。在Ruby的垃圾回收机制中,这种循环引用且不可达根的对象也会被正确处理并回收其占用的内存。