Ruby:标记垃圾收集的对象

Shy*_*yam 7 ruby oop garbage-collection

我想知道是否有一个类似于Ruby对象的.finalize()方法,这标志着它们已准备好进行垃圾收集.如果我要创建20,000个对象,并且每个实例都有一个计数器,我希望该对象在达到零时标记为垃圾收集.我知道这几乎是一种Java方法,但我没有足够的Ruby经验来了解如何更好地完成这项工作.

感谢您的回答,评论和反馈!

Evg*_*nev 7

据我所知,您无法为GC准备好对象,但您可以随时强制GC:

GC.start
Run Code Online (Sandbox Code Playgroud)

如果该项目可以被释放,它将被释放.

  • 由于MRI 1.9.3引入了懒惰扫描GC,因此不再适用 (5认同)
  • 但这部分仍然是正确的:“您不能将对象标记为准备好进行 GC”。Ruby 使用相反的方法——可以访问的对象被标记为“不删除”。标记阶段完成后,其他所有内容都将被释放。这没有改变,只是当你调用 `GC.start` 时它不会立即发生 (2认同)