2011-01-14 13 views
20

私はValgrindを認識していますが、メモリ管理の問題を検出するだけです。私が探しているのは、私のプログラムの一部がどのくらいのメモリを消費するかという概要を示すツールです。例えば、ツリーマップ(KCachegrindがCallgrindのためのように)はすばらしいでしょう。メモリ使用量をプロファイルする方法は?

私はLinuxマシンで作業していますので、Windowsツールは私にはあまり役に立ちません。

答えて

20

Valgrindツールの一部であるmassifを使用してください。 massif-visualizerを使用すると、データをグラフ化したり、ms_printコマンドを使用したりすることができます。

+0

ありがとう、スクリーンショットは非常に見栄えが...、私はこれが私がいつも望んでいたと思う。 – math

4

gperftoolsで配信されるheap profilerをGoogleで試してみてください。私はいつもソースからビルドしましたが、いくつかのLinuxディストリビューションではprecompiled packageとして入手できます。

ダイナミックライブラリを実行ファイルにリンクしてプログラムを実行するのと同じくらい簡単です。これは、(限り私が見てきたように)すべての動的なメモリ割り当てに関する情報を収集し、ディスクにメモリダンプ次のいずれかが起こるたびに保存します。

  • HEAP_PROFILE_ALLOCATION_INTERVALバイトは、プログラムによって割り当てられた

      (デフォルトは:1GB)
    • HEAP_PROFILE_INUSE_INTERVALバイト(デフォルトで高水のメモリ使用量のマークが増加:あなたが明示的にコード
    • から HeapProfilerDump()を呼び出す非アクティブ)
    • :100Mbの)
    • HEAP_PROFILE_TIME_INTERVAL秒(デフォルトを経過していますあなたはヒープ使用のスナップショットを持っているとき、正確に制御し、2つの異なるスナップショットを比較し、間違っているものを見ることができるので、

    最後のものは、私の経験では、最も有用です。

    最終的には、いくつかの可能な出力形式は、(有向グラフの形で)、テキストやグラフィックのような、あります:私は間違ってメモリ使用状況を発見することができました。このツールを使用して

    Graph of memory usage

    私はマッシフを使って見つけることができませんでした。

  • 関連する問題