当不再有变量指向对象时,对象会发生什么特别的事情吗?除了有资格进行垃圾收集之外,就是这样。
例如,目前,IO 对象在被垃圾回收时会自动关闭,如果它们还没有这样做的话。即使您想更改此行为,也没有任何方法可以更改它,以便在没有更多变量指向对象时发生自动关闭,是吗?
(我的问题是稍微简化一下:WeakRef允许变量指向对象并让它们成为垃圾收集的目标。此外,对于 Ruby 的某些实现,可以通过以下方式访问没有任何变量指向它们的对象使用 ObjectSpace。关于 IO 对象,有这样的事情IO.open(&block)
会在块执行后自动关闭 IO 对象。)