Ruby-doc 有这样的描述:
ObjectSpace 模块包含许多与垃圾收集工具交互的例程,并允许您使用迭代器遍历所有活动对象。
ObjectSpace 还提供对对象终结器的支持,当特定对象即将被垃圾回收销毁时,将调用它们。
任何人都可以用更简单的语言解释这一点,如果没有,至少提供有关使用位置的信息?
Ruby-doc 有这样的描述:
ObjectSpace 模块包含许多与垃圾收集工具交互的例程,并允许您使用迭代器遍历所有活动对象。
ObjectSpace 还提供对对象终结器的支持,当特定对象即将被垃圾回收销毁时,将调用它们。
任何人都可以用更简单的语言解释这一点,如果没有,至少提供有关使用位置的信息?
垃圾收集器是一种具有托管内存的语言结构。它是管理内存的东西。本质上,垃圾收集器的工作是找出一块已分配的内存何时不再需要,并释放它。
当您使用带有垃圾收集器的语言时,您可能想要做一些事情:
ObjectSpace 使您可以访问做这种性质的事情。从本质上讲,它是一种访问当前正在使用分配内存的任何事物的方法。
例如,要计算某个类的实例数:
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
我知道类变量,这只是使用示例。每当您想对类的每个实例执行某些操作时,它都会很有用。
的实际用法ObjectSpace
是派生 Exceptions 的完整类层次结构。