Linux で関数ごとまたは C++ コードの行ごとに (リークだけでなく) メモリ使用量を表示できるランタイム メモリ デバッガーを探しています。プログラムのメモリ使用量の急増を追跡しようとしています。Valgrind と Purify を使用しましたが、リークがないことがわかりました。そのスパイクの後、メモリ使用量がプログラムの予想レベルに戻ると予想していました。
ありがとう。
Linux で関数ごとまたは C++ コードの行ごとに (リークだけでなく) メモリ使用量を表示できるランタイム メモリ デバッガーを探しています。プログラムのメモリ使用量の急増を追跡しようとしています。Valgrind と Purify を使用しましたが、リークがないことがわかりました。そのスパイクの後、メモリ使用量がプログラムの予想レベルに戻ると予想していました。
ありがとう。
ツールの valgrind パックから massif ツールを使用できます。
関数のコードサイズの使用状況を取得するには、次のようにします。
nm --demangle --print-size --size-sort --reverse-sort <your exec built with -g>
過去に valgrind を数回使用しましたが、スパイクが発生している場所を把握したい場合は、次のハックを使用します。
1)スパイクのサイズを測定します(SPIKE = 1Gbと仮定)
2) (合計 RAM が 4Gb であると仮定して) 正確に 3Gb + 1 バイトを割り当てる別のカスタム プロセスを実行し、キーを押すまで待ちます。保留にしておきます
3) アプリケーション コードを実行し、メモリ割り当てが失敗する場所を確認します。使用可能なメモリが SPIKE よりわずかに少ないため、スパイクが発生すると、要求されたメモリを割り当てることができなくなります。
それが役に立てば幸い