From: Kazuhiro HIWADA Date: 1999-06-24T00:43:57+09:00 Subject: [ruby-dev:7201] Re: WeakRef? ひわだです。 From: Kazuhiro HIWADA Subject: [ruby-dev:7174] WeakRef? > ひわだです。 > v の値に何らかのリファレンスがあるのだろうかとか推測してますが、「v = > nil」ってのは、必要なものでしょうか?。それとも実はこんなスクリプトは > 書いてはいけなくて、偶然動いてしまったのでしょうか ^^;;;。 よくわからん質問してしまって申し訳ない ^^;。解決しました ^^;。 require 'weakref.rb' def foo(a) w = WeakRef.new(a) a = nil x = proc {} [w, x] end wr, pr = foo("hoge") p wr; ObjectSpace.garbage_collect; p wr こういうスクリプトで "hoge" を GC に回収させるのに a = nil が必要なの はなぜか?という疑問だったんですが、実装のことを考えれば必要ですね。 proc の生成で scope を dup するわけだし…。dup される前にリファレンス を消しておく必要がありました…。 お騒がせしました ^^;;。では。 -- 檜田和浩