模块 ObjectSpace

objspace 库扩展了 ObjectSpace 模块,并添加了一些方法来获取关于对象/内存管理的内部统计信息。

您需要 require 'objspace' 才能使用此扩展模块。

通常,如果您不了解 MRI 实现,则 不应该 使用此库。主要来说,此库适用于需要了解 MRI 内存使用情况的(内存)分析器开发人员和 MRI 开发人员。

ObjectSpace 模块包含许多与垃圾回收机制交互的例程,并允许您使用迭代器遍历所有活动对象。

ObjectSpace 还提供对对象终结器的支持,这些终结器是在特定对象被垃圾回收销毁后调用的 proc。请参阅 ObjectSpace.define_finalizer 的文档,以获取有关如何正确使用此方法的重要信息。

a = "A"
b = "B"

ObjectSpace.define_finalizer(a, proc {|id| puts "Finalizer one on #{id}" })
ObjectSpace.define_finalizer(b, proc {|id| puts "Finalizer two on #{id}" })

a = nil
b = nil

产生

Finalizer two on 537763470
Finalizer one on 537763480