私はValgrindを認識していますが、メモリ管理の問題を検出するだけです。私が探しているのは、私のプログラムの一部がどのくらいのメモリを消費するかという概要を示すツールです。例えば、ツリーマップ(KCachegrindがCallgrindのためのように)はすばらしいでしょう。メモリ使用量をプロファイルする方法は?
私はLinuxマシンで作業していますので、Windowsツールは私にはあまり役に立ちません。
私はValgrindを認識していますが、メモリ管理の問題を検出するだけです。私が探しているのは、私のプログラムの一部がどのくらいのメモリを消費するかという概要を示すツールです。例えば、ツリーマップ(KCachegrindがCallgrindのためのように)はすばらしいでしょう。メモリ使用量をプロファイルする方法は?
私はLinuxマシンで作業していますので、Windowsツールは私にはあまり役に立ちません。
Valgrindツールの一部であるmassifを使用してください。 massif-visualizerを使用すると、データをグラフ化したり、ms_print
コマンドを使用したりすることができます。
gperftoolsで配信されるheap profilerをGoogleで試してみてください。私はいつもソースからビルドしましたが、いくつかのLinuxディストリビューションではprecompiled packageとして入手できます。
ダイナミックライブラリを実行ファイルにリンクしてプログラムを実行するのと同じくらい簡単です。これは、(限り私が見てきたように)すべての動的なメモリ割り当てに関する情報を収集し、ディスクにメモリダンプ次のいずれかが起こるたびに保存します。
HEAP_PROFILE_ALLOCATION_INTERVAL
バイトは、プログラムによって割り当てられた
HEAP_PROFILE_INUSE_INTERVAL
バイト(デフォルトで高水のメモリ使用量のマークが増加:あなたが明示的にコードHeapProfilerDump()
を呼び出す非アクティブ)
HEAP_PROFILE_TIME_INTERVAL
秒(デフォルトを経過していますあなたはヒープ使用のスナップショットを持っているとき、正確に制御し、2つの異なるスナップショットを比較し、間違っているものを見ることができるので、 最後のものは、私の経験では、最も有用です。
最終的には、いくつかの可能な出力形式は、(有向グラフの形で)、テキストやグラフィックのような、あります:私は間違ってメモリ使用状況を発見することができました。このツールを使用して
私はマッシフを使って見つけることができませんでした。
ありがとう、スクリーンショットは非常に見栄えが...、私はこれが私がいつも望んでいたと思う。 – math