rubyが激しくメモリを消費する件
- Author: harajune
- Filed under: 雑記
Tuesday
Sep 28,2010
rubyが激しくメモリを消費する件についてです。
だいたい以下のような感じのコードを動かしていたのですが、あっというまにbad_allocを吐いて落ちる。
CODE:
-
while 1
-
doc = Nologiri::HTML(text)
-
# 何かの処理
-
end
topを見ていたらメモリを消費する消費する・・・・・
しょうがないのでこういうコードを付け足しました。
CODE:
-
while 1
-
counter += 1
-
doc = Nologiri::HTML(text)
-
# 何かの処理
-
doc=nil
-
GC.start if counter % 10 == 0
-
end
これで大分マシになりました。
けどこれでも少しずつメモリを浸食してる。
ううーむ。
3 Responses for "rubyが激しくメモリを消費する件"
Conservative GC…
[...] This post was mentioned on Twitter by Rubyist Bot, hrjn2. hrjn2 said: rubyが激しくメモリを消費する件 http://blog.gijutsuya.jp/harajune/2010/09/28/ruby-consumes-memor/ [...]
Conservative GCがよく批判されてたけど、こんなところで実感するとはなー。
そういえば、昔javaでnullを突っ込むわざがあったのを思い出してやってみたら結構きいた。
しかし、メモリ上のデータが増えてくるとGCが凄く重くなるという自体が発生していた・・・・・
結局メモリを食う部分をC++で書き直して、rubyで処理した結果をパイプでC++で書いたプログラムに食わせて処理したw
これが結構安定的に早い(そしてC++で全部書くよりは大分労力的にまし)