From: Hidetoshi NAGAI Date: 2008-05-21T17:59:32+09:00 Subject: [ruby-dev:34789] [ruby_1_8] memory leak by Array#flatten ??? 永井@知能.九工大です. Array#flatten に memory leak があるのではないかという気がします. 次のスクリプトを実行すると, ---------------------------------------------------- coords = [] n = 0 (-10..300).step(5){|n| coords << [n, 100] } max_cnt = 0 max_len = 0 pre_cnt = 0 pre_len = 0 loop{ coords.flatten cnt = 0 len = 0 ObjectSpace.each_object(Array){|obj| cnt += 1 len += obj.length } p [[cnt, max_cnt], [len, max_len]] if pre_cnt > cnt || pre_len > len # GC ? max_cnt = cnt if max_cnt < cnt max_len = len if max_len < len pre_cnt, pre_len = cnt, len } ---------------------------------------------------- 端末に出力されるログを見ている限りは Array オブジェクトの総数およびそのサイズの総計は GC が働いて頭打ちになっているようなのですが, プロセスのメモリ消費量はどんどん増大していきます. 実行したバイナリは $ ruby -v ruby 1.8.7 (2008-05-21 patchlevel 5000) [i686-linux] です (ruby_1_8 revision 16505). -- 永井 秀利 (nagai@ai.kyutech.ac.jp) 九州工業大学 大学院情報工学研究院 知能情報工学研究系