From: WATANABE Tetsuya Date: 2002-10-11T10:21:18+09:00 Subject: [ruby-dev:18491] Re: mem leak? 渡辺哲也です。 対応ありがとうございます。 In message "[ruby-dev:18487] Re: mem leak?" on 02/10/10, nobu.nakada@nifty.ne.jp さん writes: |なかだです。 |正確に計算するのは無理があるので、大雑把ですがこんなところでど |うでしょうか。[ruby-dev:18482]で試したところでは7MB弱になりまし |た。GCの速度がどの程度落ちるかは測ってみてませんが。 こちらでも、動作を確認しました。 ことのはじまりは、Ruby でネットワーク経由 のデータ受けとりサーバを書いていたのです。 普通に? while do end していたら、どんどん プロセスが大きくなって、200MB(RSS) オーバ してしまいました。この状態は、page out が 頻発して、システムにかなり影響がありまし た(う、重い...)。 GC すればいいのは、気がついたのですが、GC を入れるタイミングを、一つの処理のループ ないに入れてしまうと、そこそこの記述にな りますし。 while で回している間、メモリに抱え込んで しまうのは、やっぱり困るなと思ったのです。 処理速度なのですが、やはり遅くなっている ようです。こういうの微妙ですね。遅くなっ たのは、100MB のデータをネットワーク経由 で転送するもので、ちょい特殊ですけど。 100MB というようなデータを扱わなければ、 最近のシステムはメモリが大きいので大丈夫 なのかもしれませんね。 メモリを豊富に使えるシステムの場合で速度 が必要な場合、自分で GC をコントロールす るのがいいみたいです。GC.disable して、必 要なときに GC.enable GC.start という手順 を実施すればよさそうです。 # 人によっては、逆の場合もあるでしょうね。 # デフォルトがどちら側についているか? が # 微妙なところです。実メモリに近い(以上の) # データを扱わなければ、気がつかないです # し。難しい... GC.disable 中に GC.start だけ実施しても GC は、動かないようですね。