web-dev-qa-db-ja.com

Linuxで「C」プログラムによって消費されるメモリを計算する方法

2つのCプログラムを作成しました

  1. 1つは関数ポインタを使用しており、
  2. もう1つは関数ポインターなしです。

ここで、2つのプログラムによって消費されるメモリを知り、メモリを最適化する方法を確認します。

5
Nagraj

どのような統計が必要かによって異なりますが、Linuxで実行しているCでプログラムを作成している場合は、 Valgrind について確実に理解する必要があります。

Valgrindは、プログラムの詳細なメモリ使用量をプロファイルするだけでなく、Cで一般的であり、デバッグが非常に難しいメモリアクセス違反を検出することもできます。

プロファイリングの目的で、特定の分析ツール、特に memcheck および massif に関するドキュメントをご覧ください。

5
yaegashi

事後に使用されるメモリのみに関心がある場合は、GNU timeを使用します。

command time -v myprogram

(上記ではbashビルトインではなくtimeを使用して外部bashコマンドを呼び出しています。シェルは異なる場合があります)。

または、GNU memusage

memusage -T ./myprogram

継続的に(つまり、長時間実行されているプロセス中に)使用されるメモリに関心がある場合は、他の回答のいずれかがおそらくより良いでしょう。この関連する質問も参照してください: timeコマンドに類似した構文を持つメモリ使用量コマンド

5
mr.spuratic

これは、1つのシステム上のすべてのsshdプロセスの常駐セットサイズと仮想メモリサイズです。

ulric@qvp2:~$ ps -eo rss,vsz,args|grep sshd|grep -v grep
  448  55292 /usr/sbin/sshd -D
 5176 147460 sshd: ulric [priv]
 2776 149704 sshd: ulric@pts/3

またはおそらくもっと簡単:

ulric@qvp2:~$ ps aux|head -n 1&&ps aux|grep sshd|grep -v grep
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     13221  0.0  0.0  55292   448 ?        Ss   Apr21   0:01 /usr/sbin/sshd -D
root     16046  0.0  0.5 147460  5176 ?        Ss   08:12   0:00 sshd: ulric [priv]
ulric    16187  0.0  0.2 149704  2776 ?        S    08:12   0:00 sshd: ulric@pts/3

その他のオプションについては、psマンページを参照してください。

3
Ulric Eriksson