Ruby Class对象垃圾回收

Vai*_*hta 23 ruby garbage-collection

在ruby中,所有类都是Class类的对象.由于类也是对象,Ruby VM是否遵循针对类对象的相同垃圾收集策略?是什么决定了类对象对垃圾收集是否安全?

Mat*_*lly 13

一个更具体的例子,类似于Andrew Cholakian的回答是使用ObjectSpace.例如:

2.1.1 :001 > ObjectSpace.count_objects[:T_CLASS]
 => 884 
2.1.1 :002 > 10000.times { Class.new }
 => 10000 
2.1.1 :003 > ObjectSpace.count_objects[:T_CLASS]
 => 20884 
2.1.1 :004 > GC.start
 => nil 
2.1.1 :005 > ObjectSpace.count_objects[:T_CLASS]
 => 884 
Run Code Online (Sandbox Code Playgroud)

这表明匿名类(未保存在任何地方的常量或由这些类的任何实例使用)确实会收集垃圾.


Tre*_*oke 0

当没有任何东西链接到该对象时,就可以安全地删除它。至于何时运行垃圾收集,这超出了我的知识范围。