From: Yukihiro Matsumoto Date: 2005-01-06T16:21:56+09:00 Subject: [ruby-dev:25415] Re: 1.9.0で使用済みソケットが回収されない? まつもと ゆきひろです In message "Re: [ruby-dev:25414] 1.9.0で使用済みソケットが回収されない?" on Thu, 6 Jan 2005 16:08:18 +0900, H.Yamamoto writes: |1.9.0のbcc32でtest/drbが止まるのを調べていて気づいたのですが、 |どうも、1.9.0では使用済みソケットが回収されていないように見えます。 | |下のパッチを当てて test/drb を実行すると、1.8.2 ではファイルハンドルの |値(ハンドルテーブルのインデックス)が適宜減るのに対して、1.9.0 では |増えつづけ、最後には 152 に達します。 | | ruby -rsocket -e "50.times { TCPSocket.open(???, ???) }" | |のようなコードでも再現できます。 GCが発生しなければ回収されませんが、その辺はどうでしょう。 たとえば、以下のようにして回収されるかどうか確認してみてくだ さい。 ruby -rsocket -e "50.times { p TCPSocket.open(???, ???).to_i; GC.start }" 1.9と1.8でGCのタイミングが異なるせいかもしれません。あるいは win32のfinalizeでsocketの解放が行われていないのかもしれませ んが。 まつもと ゆきひろ /:|)