Ruby-doc有这样的描述:
ObjectSpace模块包含一个 与之交互的例程数量 垃圾收集设施和 让你遍历所有生活 具有迭代器的对象。
ObjectSpace也提供支持 对象终结者,即将进行的触发 在特定对象的时候调用 被垃圾收集摧毁。
任何人都可以用更简单的语言解释这一点,如果没有,至少提供有关使用方法的信息吗?
答案 0 :(得分:7)
garbage collector是具有托管内存的语言的构造。这是管理记忆的事情。从本质上讲,垃圾收集器的工作是弄清楚何时不再需要已经分配的内存,并释放它。
当您使用带有垃圾收集器的语言时,您可能需要执行某些操作:
ObjectSpace让您可以访问这种性质的东西。从本质上讲,它是一种访问任何当前使用已分配内存的东西的方法。
答案 1 :(得分:6)
例如,要计算某个类的实例数:
class Examp
def self.obj_count
count = 0
ObjectSpace.each_object(self) do |b|
count += 1
end
return count
end
end
a = Examp.new
b = Examp.new
c = Examp.new
puts Examp.obj_count #=> 3
我知道类变量,它只是用法的一个例子。每当你想对每个类的实例执行某些操作时,它都会很有用。
答案 2 :(得分:2)
ObjectSpace
的真实用途是derive the full class hierarchy of Exceptions。