From: SASADA Koichi Date: 2010-11-04T01:47:54+09:00 Subject: [ruby-dev:42529] Re: Finalizer behaviour  ささだです。 (2010/11/03 16:33), SASADA Koichi wrote: >  ファイナライザの挙動がわからないので教えて下さい。 > > loop{ > obj = '' > # p obj.object_id # (*1) > ObjectSpace.define_finalizer(obj){|id| > p id > } > 'b' > } > >  上記スクリプトにて、(*1) の箇所をコメントアウトするとファイナライザは > 実行されますが、このようにコメントアウトしていると起動しません。 > >  なぜでしょうか。  自己解決しました。ファイナライザとして Proc オブジェクトを作成・保存し ますが、そこから obj への参照が残っているので解放されないってことです ね。例えば、obj を $obj とすると問題無くなります。 -- // SASADA Koichi at atdot dot net