いがらしです。

だいぶ間のあいたリブライで申し訳ないのですが……

At Wed, 15 Sep 1999 19:53:07 +0900,
in [ruby-list:16799] [Ruby/Gtk bug?],
> Ruby/Gtk のサンプル drawing.rb に関してです。
> 
> この drawing.rb の window を resize すると、
> メモリリークがおこるようです。
> 
> たとえば、top コマンドで X Server の使用 memory を観察しながら、
> drawing.rb の window を resize させ繰り返すと
> 使用メモリがどんどん増えていきます。
> また、メモリを使いきってしまった場合、X ごと落ちてしまいます。
> 
> Gdk::Pixmap が GC の対象になっていないからではないか
> と思うのですが、どのように対処したらよいのかわかりませんでした。

Ruby/GTK 0.22では、GCの対象になりさえすれば正しくリソースが解放
されるようになったと思います。

ただX Serverのリソース消費量を見ていないので、いくらPixmapを大量
に作成してもrubyインタプリタからは見かけ上あまりメモリを使ってい
ないように見えています。そのため、参照されていないGtk::Pixmapが
すぐにガーベッジコレクトされないことがあります。

大量にPixmapを作ってすぐに捨ててしまうような場面では、Pixmapを参
照をしないようにした後にGC.start等で明示的にGCを起動することによ
り、Xのサーバプロセスがふくれ上がる現象は回避できると思います。

もし問題があればまたお知らせ下さい。

--
五十嵐  宏  (Hiroshi IGARASHI)