QA@IT

Ruby でメモリリークの原因を調査する方法

3576 PV

Ruby 1.9.2 でそれなりに多いオブジェクト (数十万) を扱うコードを書いています。
できるだけメモリリークしないよう書いてはいたのですが、動かしてみるとどんどんメモリ使用量が増えていきます。

こういった場合に、どこが原因でメモリリークが起きているか調査する方法はありますでしょうか?
dike という gem が使えそうだったのですが、いまのところ 1.9 には対応していないようです。

回答

ObjectSpace (標準添付の objspace ライブラリ) を使うのが定石ですかね。
ObjectSpace.count_objects や ObjectSpace.each_object で戦えると思います。
これベースにメモリプロファイラを作っている人もいるので、
探せばより用途に沿ったものも見つかるかもしれません。

編集 履歴 (0)
  • ありがとうございます!
    ObjectSpace.each_object はクラスごとにチェックできるんですね。試してみます。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。