什么在“退出”上运行,如何在退出时不运行Object Finalizers?
注意:我确实想使用exit!。
答案 0 :(得分:0)
“exit”运行用以下内容定义的代码块:
at_exit { run_this }
以及任何Object Finalizers。
您可以通过点击ObjectSpace并使用“undefine_finalizer”取消定义Object Finalizer,但我不建议您这样做。通过ObjectSpace访问和销毁对象可能会导致奇怪的行为(JRuby也不会利用ObjectSpace,除非你明确告诉它使用“+ O”标志)
取消定义ObjectFinalizer看起来像:
ObjectSpace.undefine_finalizer(obj)
再次,深入研究这样的Ruby内部可能会导致应用程序出现异常行为,确保在将此类内容发布到生产应用程序之前就知道自己在做什么。