私は2つのCプログラムを書いた
- 一つは関数ポインタを使うことであり、
- もう一つは関数ポインタを持っていません。
今、これら2つのプログラムが消費するメモリを知り、メモリを最適化する方法を知りたいです。
答え1
後で使用されるメモリにのみ興味がある場合は、GNUを使用してくださいtime
。
command time -v myprogram
(上記では、組み込みコマンドではなくbash
外部コマンドを呼び出す方法を使用しているため、シェルが異なる場合があります。)time
bash
またはGNU memusage
:
memusage -T ./myprogram
継続的に使用されているメモリ(長期実行プロセスなど)に興味がある場合は、他の答えの1つがより良い可能性があります。この関連質問も参照してください。メモリ使用量コマンド、構文はtimeコマンドと似ています。
答え2
答え3
以下は、システム内のすべての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のマンページをご覧ください。
答え4
最も簡単な方法は、ヒープポインタをキャプチャすることです。sbrk(0)、これを64ビット符号なし整数に変換し、メモリを割り当てて差を計算します。