什么在“退出”运行,如何在退出时不运行Object Finalizers?红宝石

时间:2011-03-14 07:04:52

标签: ruby

什么在“退出”上运行,如何在退出时不运行Object Finalizers?

注意:我确实想使用exit!。

1 个答案:

答案 0 :(得分:0)

“exit”运行用以下内容定义的代码块:

at_exit { run_this }

以及任何Object Finalizers。

您可以通过点击ObjectSpace并使用“undefine_finalizer”取消定义Object Finalizer,但我不建议您这样做。通过ObjectSpace访问和销毁对象可能会导致奇怪的行为(JRuby也不会利用ObjectSpace,除非你明确告诉它使用“+ O”标志)

取消定义ObjectFinalizer看起来像:

ObjectSpace.undefine_finalizer(obj)

再次,深入研究这样的Ruby内部可能会导致应用程序出现异常行为,确保在将此类内容发布到生产应用程序之前就知道自己在做什么。

http://www.ruby-doc.org/core/classes/ObjectSpace.html