Valgrind ツールの一部である massif を使用します。 massif-visualizer はデータをグラフ化するのに役立ちます。または ms_print
を使用することもできます コマンド。
Google が提供する gperftools で提供されるヒープ プロファイラーを試してください。私は常にソースからビルドしてきましたが、いくつかの Linux ディストリビューションでプリコンパイル済みパッケージとして入手できます。
動的ライブラリを実行可能ファイルにリンクしてプログラムを実行するのと同じくらい簡単に使用できます。すべての動的メモリ割り当てに関する情報を収集し (私が確認した限り)、メモリ ダンプ をディスクに保存します。 次のいずれかが発生するたび:
HEAP_PROFILE_ALLOCATION_INTERVAL
バイトがプログラムによって割り当てられています (デフォルト:1Gb)- 最高水準のメモリ使用量マークが
HEAP_PROFILE_INUSE_INTERVAL
増加します バイト (デフォルト:100Mb) HEAP_PROFILE_TIME_INTERVAL
秒が経過しました (デフォルト:非アクティブ)- 明示的に
HeapProfilerDump()
を呼び出します コードから
私の経験では、最後の方法が最も便利です。ヒープ使用量のスナップショットを作成するタイミングを正確に制御できるからです。 次に、2 つの異なるスナップショットを比較して、何が問題なのかを確認してください。
最終的に、テキストやグラフィック (有向グラフの形式) など、いくつかの可能な出力形式があります。
このツールを使用することで、Massif では見つけられなかった誤ったメモリ使用量を見つけることができました。