web-dev-qa-db-ja.com

Linuxでプログラムが使用したメモリの量を知るにはどうすればよいですか?

プロセスのメモリ消費量を取得 この質問は、実行中のプログラムのメモリ使用量を取得することに関するものです。プログラムが終了した後、RAMプログラムがどれだけ使用したかを知る必要があります。

このコマンドg++ main.cppを使用してC++プログラムをコンパイルしているとします。終了後にこれがどれだけのメモリを使用したかを知る必要があります。または、メモリを特定の瞬間にしか測定できない場合は、プログラムをコンパイルするときの最大使用量RAM)を知る必要があります。

/usr/bin/time -f "%M"に渡したプログラムの場合、最大常駐値0を取得します。プログラムがギガバイトのメモリを使用していると確信しています。

2
Ashot

/usr/bin/timeの下でプログラムを実行し、最大常駐値を確認します。より単純な組み込みのtimeコマンドを使用しないようにするには、フルパスを指定する必要があります。

3
psusi

私はいつもvalgrindでコードをテストします。

次のようにコードを実行します

valgrind --leak-check=yes --track-origins=yes ./a.out

これは、メモリ消費(割り当て/割り当て解除)に関する優れた出力を提供しますが、非常に遅い実行に備えてください。

コンパイル時に-gフラグを使用すると、valgrindがメモリをリークする可能性のある行に関する情報を提供するのに役立ちます。 (おまけ)

追加の出力については、追加のvalgrindパラメーターを自由に確認してください。私にとっては、これら2つで十分です。

1

カーネルを変更したり、メモリ使用量を記録するある種のラッパー内で調査中のプログラムを実行したりする以外に、最善の策は、リンクされた質問への回答で与えられたアドバイスを受けることです。

0
Aaron Miller