我在 VMWare 上运行了 Ubuntu 12.10(内核 3.9.0-rc2)安装。我给了它 512MB RAM。
cat /proc/meminfo 显示:
MemTotal:507864 KB
MemFree:440180
我想使用交换(出于某种原因),所以我编写了一个 C 程序,它分配了一个 500MB 数组(使用 malloc())并用垃圾填充它。但是,程序在填满整个数组之前就被杀死了,屏幕上会出现一条消息“Killed”。
我想问这是否是正常行为,这背后的原因是什么?在我看来,应该使用交换,因为可用 RAM 不足。
编辑:我没有提到我有 1GB 交换。cat /proc/swaps 显示:
/dev/sda5 大小:1046524 已使用:14672
。当我运行消耗内存的程序时,“已使用”数量会增加。但是正如你所看到的,很多交换是剩余的。那么为什么程序必须被“杀死”呢?