2012-07-13 11 views
5

私は非Railsアプリケーションで、好ましくはYARV Rubyを使用してGCをプロファイルしようとしています。Rubyでガベージコレクションをプロファイリングする方法

perftools.rbは、私のCPU時間の大部分がgarbage_collector(6061(61.4%))で費やされていることを教えています。

また、perftools.rbを使用して、作成するオブジェクトの数を取得することもできます。いくつかのメソッドは他のものより多くのオブジェクトを作成しますが、それは極端に歪んでいません。

どこから行くのですか?それはなぜそれがGCをしてあまりにも多くの時間を費やしているの詳細な情報を取得することは可能ですか?時間がオブジェクトを取り除くのに費やされているかどうか、またはオブジェクトがガベージコレクションされるべきかどうかをチェックするのに費やされるかどうかを確認することは可能ですか?

私はOS X Lion、Windows 7、およびUbuntu 12.04にアクセスできます。

答えて

1

osxにはdtraceがあります。 YARVルビにはdtraceプロバイダがあります。

あなたが使用できるGCに関連したプローブのカップルがあります:

GC-始める GC-エンド GC-マーク始める GC-マーク・エンド GC-スイープ開始 GC-をsweep-end

あなたのプログラムのGCが何をしているかを見つけるのに役立つと思います。このファイルをどのように使用するかを見てください:https://github.com/tenderlove/ruby/blob/probes/test/dtrace/test_gc.rb

そして、もっと説明については、この記事: http://tenderlovemaking.com/2011/06/29/i-want-dtrace-probes-in-ruby.htmlパッチは、これらのプローブを持つようにルビーに適用するか、パッチがすでに適用されて https://github.com/tenderlove/ruby/tree/probesを使用することができます見つけることができますルビー http://bugs.ruby-lang.org/issues/2565にオープンしたバグがあります

希望すると便利です。

関連する問題