Bug #11332
Updated by nobu (Nobuyoshi Nakada) over 9 years ago
きしもとです `Array` Array の `sort!` と、`pop` sort! と、pop または `shift` shift の操作を組み合わせると、わずか ですが ruby インタプリタのメモリリークを引き起こすようです。多数回 繰返すと、どんどん大きくなります。 以下のサンプルを手元の環境(FreeBSD/amd64のruby 2.1.6、ruby 2.2.2、 trunk (r51120) )で試すと、どれもインタプリタのプロセスのメモリ サイズが大きくなっていきます(最後はメモリを確保できなくなって 落ちる)。 \# # ObjectSpace.memsize_of_all で調べるとオブジェクトは増えたり \# # 大きくなったりはしていません。 ~~~ruby # -*- mode:ruby ; coding:utf-8 -*- def sample rg arr = [] sz = 5 + rg.rand(5) i = 0 while i < sz do arr[i] = rg.rand i += 1 end until arr.empty? do arr.sort! arr.pop #arr.shift end end randgen = Random.new 12345 count = 0 while true do sample randgen if (count += 1) > 1000000 then count = 0 p "GC" GC.start end end ~~~