在linux中为进程分配内存

时间:2010-11-20 07:42:35

标签: linux memory-management

亲爱的,我正在使用Redhat linux,如何为特定进程设置最大内存。例如,我必须分配最大的内存使用量来单独使用eclipse。是否可以像这样分配。给我一些解决方案。

2 个答案:

答案 0 :(得分:2)

ulimit -v 102400
eclipse

...给eclipse 100MiB的记忆。

答案 1 :(得分:1)

您无法控制内存使用情况;您只能控制虚拟内存大小,而不能控制实际使用的内存量,因为在支持虚拟内存的操作系统上,单个进程知道非常复杂(可能是不可能的)。

并非所有使用的内存都会在给定时刻出现在进程的虚拟地址空间中,例如内核使用和光盘缓存。进程可以根据需要随时更改已映射的页面(例如,通过mmap())。某些进程的地址空间也会映射到,但不会实际使用,或者与一个或多个其他进程共享。这使得测量每个进程的内存使用量在实践中是一个相当难以实现的目标。

对VM大小设置上限也不是一个好主意,因为如果尝试使用更多进程,将导致进程被终止。

在这种情况下(对于Java进程),正确的方法是设置堆最大大小(通过各种记录良好的JVM启动选项)。但是,经验表明您不应将其设置为小于1Gb。