如何减少从终端分配给给定程序的内存?
我的意思是如果我有一个a.out
可执行文件,我怎样才能让它在终端以更少的内存运行(不使用任何特殊应用程序)
$./a.out fooo
这样我的程序 a.out 只需要很少的空间就可以运行。
答案1
据我所知,严格来说你不能(除非使用某种虚拟机或使用cgroups 这并不容易;你可以看到来自@muru 的这个答案。
您可以使用 来限制可用内存ulimit
,但这只会在分配时告诉程序没有更多内存,或者如果它无法处理内存不足的情况,则会用信号使其崩溃。看:
zcat /var/log/syslog.2.gz
它起作用了,输出了很多
ulimit -d 100
ulimit -m 100
(这将数据和核心内存限制为 100 kB)
[romano:~] 2 % zcat /var/log/syslog.2.gz
/bin/zcat: xmalloc: .././subst.c:3542: cannot allocate 267 bytes (53248 bytes allocated)
但是shell仍然能够看到所有的内存:
[romano:~] 2 % free
total used free shared buffers cached
Mem: 15340736 5148596 10192140 368776 284192 2794848
-/+ buffers/cache: 2069556 13271180
Swap: 31999996 0 31999996
编辑:更多信息这个 unix.se 帖子。
答案2
你可以用这个命令来做这件事ulimit
,下面是手册页
。