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參數之間的區別
物理內存與虛擬內存間接相關。在堆上有任何分配之前,它不佔用物理內存(內存頁未提交)。 –
這不完全相同。文檔沒有明確說明,我也不打算進入JVM源代碼,但可能是JVM最初並未從操作系統分配整個初始堆。 – chrylis
@chrylis java進程爲自己請求Xms內存,但這並不意味着實際佔用了這麼多的物理RAM。這都是虛擬內存。 –