module ObjectSpace

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

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

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

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

ObjectSpace 还支持对象 finalizer,这些 finalizer 在特定对象被垃圾回收销毁后会被调用。有关如何正确使用此方法的关键信息,请参阅 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