From: Narihiro Nakamura Date: 2010-11-04T09:52:33+09:00 Subject: [ruby-dev:42532] Re: GC issues nariです。 2010年11月3日17:59 SASADA Koichi : >  ささだです。 > > GC まわりを見てたんですが、いくつか疑問点がありました。 > > 1. ファイナライザの起動タイミング > > 現在、ファイナライザは after_gc_sweep() のタイミングでしか起動されませ > ん。つまり、すべての sweep が完了するまで遅延するわけですが、これは資源 > 解放のタイミングを遅くすることになるので、まずいような気がします。 > > これを、slot_sweep のたびにファイナライザを呼ぶようにしたら、メモリが > 少ない環境でも、test-all が最後まで動くようになりました。 > パッチを見ました。私は問題ないと思います。 > 2. GC.stress が true 時の挙動 > > GC.stress が true の時は、mark/free を行い、オブジェクト空間が(それな > りに)綺麗になっている、ということを期待しているように思いますが、現在は > gc_lazy_sweep() を行うだけなので、まだ sweep が完了していない場合は、 > mark などは起こりません。 単純に GC.stress はGCに負荷をかけるものだと思って、毎回 gc_lazy_sweep() を呼び出すようにしていました。 特に深い意図はないので、異論がなければ前と同じように garbage_collect() を呼び出すように戻しておきます。 -- Narihiro Nakamura (nari)