5

できれば YARV Ruby を使用して、Rails 以外のアプリケーションで GC をプロファイリングしようとしています。

perftools.rb を見ると、CPU 時間の大部分が Garbage_collector (6061 (61.4%)) に費やされていることがわかります。

perftools.rb を使用して、どのメソッドによって作成されたオブジェクトの数を取得することもできます。一部のメソッドは他のメソッドよりも多くのオブジェクトを作成しますが、極端に偏っているわけではありません。

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

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

4

1 に答える 1

1

osx には dtrace があります。YARV ruby​​ には dtrace プロバイダーがあります。

使用できる GC に関連するプローブがいくつかあります。

gc-begin gc-end gc-mark-begin gc-mark-end gc-sweep-begin gc-sweep-end

プログラム内の GC が何をしているかを見つけるのに役立つと思います。このファイルを見て、それらの使用方法を確認してください: https://github.com/tenderlove/ruby/blob/probes/test/dtrace/test_gc.rb

詳細については、この投稿を参照してください。

ruby http://bugs.ruby-lang.org/issues/2565で開かれたバグがあります。これらのプローブを使用するために ruby​​ に適用するパッチを見つけるか、https://github.com/tenderlove/rubyを使用できます。パッチが既に適用されている/tree/probes 。

お役に立てれば

于 2012-07-16T14:41:55.690 に答える