または同様のツールを使用ps
すると、そのプロセスによって割り当てられたメモリ ページの量のみを取得できます。この数値は正しいですが、次のとおりです。
アプリケーションが実際に使用するメモリの量を本当に知りたい場合は、プロファイラー内で実行する必要があります。たとえば、Valgrindを使用すると、使用されているメモリの量や、さらに重要なこととして、プログラムで発生する可能性のあるメモリ リークについての洞察を得ることができます。Valgrind のヒープ プロファイラー ツールは「massif」と呼ばれます。
Massif はヒープ プロファイラーです。プログラムのヒープの定期的なスナップショットを取得して、詳細なヒープ プロファイリングを実行します。プログラムのどの部分が最も多くのメモリ割り当てを担当しているかに関する情報を含む、経時的なヒープ使用量を示すグラフを生成します。グラフは、最も多くのメモリが割り当てられている場所を特定するための詳細情報を含むテキスト ファイルまたは HTML ファイルによって補足されます。Massif は通常よりも約 20 倍遅くプログラムを実行します。
Valgrind のドキュメントで説明されているように、 Valgrindを介してプログラムを実行する必要があります。
valgrind --tool=massif <executable> <arguments>
Massif は、メモリ使用量のスナップショットのダンプを書き込みます (例: massif.out.12345
)。これらは、(1) メモリ使用量のタイムライン、(2) 各スナップショットについて、プログラム メモリが割り当てられた場所の記録を提供します。これらのファイルを分析するための優れたグラフィカル ツールは、massif-visualizerです。しかしms_print
、Valgrind に同梱されている単純なテキストベースのツールである がすでに非常に役立っていることがわかりました。
メモリ リークを見つけるにはmemcheck
、valgrind の (既定の) ツールを使用します。