7

次の C プログラム 'pause.c' を考えてみましょう。

void main() { pause(); }

このコマンド 'gcc -Os pause.c -o pause' を使用して x64 Linux 3.0.0-16-generic でこれをコンパイルすると、サイズが ~8KB の実行可能ファイルが生成されます。この実行可能ファイルを実行し、'pmap -d PID' を使用して正確なメモリ フットプリントを調べると、プロセスに割り当てられたプライベート メモリが 192KB であることがわかります (通常、システムによって異なり、128KB から 192KB の間で異なります)。

valgrind と massif を使用してプロセスを調べると、メモリ割り当てイベントの検出に失敗します。192KB という数値が正確かどうかは懐疑的でしたが、「一時停止」プロセスの 5 つのインスタンスを開始すると、約 1MB のシステム メモリが消費されることがわかりました。

このメモリの起源を説明するのは途方に暮れています。このメモリが割り当てられている理由と、メモリを減らす可能性のある潜在的なアクションについて、誰かが洞察を提供できますか?

4

1 に答える 1

11

スタック制限を減らすと、メモリ フットプリントが減少します。

ulimit -s 8
于 2012-03-27T11:28:30.403 に答える