2013-08-25 117 views
0

我正在運行6個java進程。我爲每個進程設置了-Xms和-Xmx參數爲1 GB。因此總堆分配爲6 GB。 我有8 GB的物理內存。因此,在啓動這6個進程後,「free」命令應該顯示6 GB已用,剩餘2 GB,但不是這種情況。 取而代之的是「free」只顯示1 GB被使用,7 GB是空閒的。 我有點困惑,因爲我對-Xms(A MB)的理解是,內存的MB被操作系統分配給JVM,而-Xmx(B MB)意味着JVM可能擴展到B MB。 在我的情況下,A和B都是相同的。 請在這裏幫忙。java命令的-xms和-xmx參數之間的區別

+0

物理內存與虛擬內存間接相關。在堆上有任何分配之前,它不佔用物理內存(內存頁未提交)。 –

+0

這不完全相同。文檔沒有明確說明,我也不打算進入JVM源代碼,但可能是JVM最初並未從操作系統分配整個初始堆。 – chrylis

+0

@chrylis java進程爲自己請求Xms內存,但這並不意味着實際佔用了這麼多的物理RAM。這都是虛擬內存。 –

回答

0

如果您使用Linux,可能是因爲在進程寫入內存之前,即使進程已分配內存,內存也不會物理分配給進程。

相關問題