我怎样才能减少内存

我怎样才能减少内存

如何减少从终端分配给给定程序的内存?

我的意思是如果我有一个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,下面是手册页

相关内容