如何减少最小Linux进程的内存占用量

Gea*_*phy 7 c linux memory memory-footprint

考虑以下C程序'pause.c':

void main() { pause(); }
Run Code Online (Sandbox Code Playgroud)

使用此命令'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的系统内存.

我无法解释这种记忆的起源,任何人都可以提供一些关于为什么这种记忆被分配以及任何可能减少它的潜在行动的见解,欢呼.

str*_*kol 11

减少堆栈限制将降低内存占用量:

ulimit -s 8
Run Code Online (Sandbox Code Playgroud)