Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | ObjectSpace | undefine_finalizer

概要

Object#undefine_finalizer(obj) -> object

詳細

define_finalizer で登録した obj が解放されるときに実行されるファイナライザ proc の登録をすべて解除する。

サンプルコード
class Hoge
  def Hoge.callback
    proc {
      puts "finalize"
    }
  end

  def initialize
    ObjectSpace.define_finalizer(self, Hoge.callback)
  end

  def undef
    ObjectSpace.undefine_finalizer(self)
  end
end

hoge = Hoge.new
GC.start
hoge = Hoge.new
hoge.undef
GC.start

出力

undef にしたため、finalize が1回しか出力されない

finalize