考虑以下 C 程序“pause.c”:
void main() { pause(); }
在 x64 Linux 3.0.0-16-generic 上使用这个命令 'gcc -Os pause.c -o pause' 编译它会产生一个大小约为 8KB 的可执行文件。当我运行这个可执行文件并使用“pmap -d PID”检查它的精确内存占用时,它显示分配给进程的私有内存为 192KB(通常在不同的系统之间变化,在 128KB 和 192KB 之间)。
使用 valgrind 和 massif 检查进程未能检测到任何内存分配事件。我怀疑 192KB 的数字是否准确,但我发现启动 5 个“暂停”进程实例确实消耗了大约 1MB 的系统内存。
我无法解释这种记忆的起源,任何人都可以提供一些关于为什么分配这种记忆以及任何可能减少它的潜在行动的见解吗?,欢呼。