我花了2个小时阅读有关此问题的问题,但仍然存在一些误解。
我有这个过程:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1452 0.4 1.8 1397012 19308 ? Sl 04:23 3:48 ./transaction_server
这表明它使用了整个系统内存19.3Mb
附近1.8%
的系统驻留内存(我没有交换文件)1GB
。虚拟大小为1.39GB
?!?。我读过那ulimit -m
行不通。人们使用ulimit -v
例如为该过程设置虚拟内存。这是VSZ列出的虚拟内存ps
吗?如果要限制此过程100MB
最多使用系统内存,应该设置什么值。我已经阅读了文档setrlimit
,这似乎是合法的:
RLIMIT_AS
This is the maximum size of a process' total available memory,
in bytes. If this limit is exceeded, the malloc() and mmap()
functions shall fail with errno set to [ENOMEM]. In addition,
the automatic stack growth fails with the effects outlined above.
但是在其他版本的文档中,此RLIMIT_AS
参数设置虚拟内存大小。真相是什么?