2010-11-20 116 views
0

尊敬的各位,我使用的是Redhat Linux,如何爲特定進程設置最大內存。例如,我必須分配最大內存使用量來單獨進行日食。可以像這樣分配。給我一些解決方案。在linux中爲進程分配內存

+0

我想將該內存設置爲永久的特定進程。 – Mohan 2010-11-20 08:03:00

回答

1

您無法控制內存使用情況;您只能控制虛擬內存大小,而不能控制實際使用的內存量,因爲在支持虛擬內存的操作系統上,單個進程的知道程度非常複雜(可能不可能)。

並非所有使用的內存都在給定的時刻出現在進程的虛擬地址空間中,例如內核使用率和磁盤緩存。一個進程可以隨時改變它所映射的頁面(例如,通過mmap())。某些進程的地址空間也映射進來,但並未實際使用,或者與一個或多個其他進程共享。這使得在實踐中測量每進程內存使用情況是相當難以實現的目標。

並且在虛擬機大小上加上限制也不是一個好主意,因爲如果嘗試使用更多,這將導致進程被終止。

在這種情況下(對於Java進程),這樣做的正確方法是設置堆的最大大小(通過各種記錄良好的JVM啓動選項)。但是,經驗表明,您不應將其設置爲小於1Gb。

+0

Ya馬克你是對的,我找不到任何解決方案這個任務。我試過安德烈的解決方案。但是隻控制虛擬內存。所以我選擇你的最後一點來增加堆內存大小(對於Java)。謝謝很多。 – Mohan 2010-11-22 05:15:52

2
ulimit -v 102400 
eclipse 

...給月食100MiB的記憶。

+0

謝謝,在提示這個命令後,它會分配100MB到eclipse。那麼如何找到這個分配內存的日食。 – Mohan 2010-11-20 07:53:18