2015-11-24 68 views
-2

我想找出多少物理內存怎麼做JVM在以下情況下使用:根據給定的參數,JVM使用多少物理內存?

的Java -Xms2G -Xmx2G -XX:PermSize512M -version

我認爲它是用分鐘和2GB的最大+ 512 MB - 共使用2.5GB物理內存?

當將交換空間來發揮作用的內存使用情況?

enter image description here

註釋1:https://plumbr.eu/outofmemoryerror/java-heap-space 參考文獻2:https://plumbr.eu/outofmemoryerror/out-of-swap-space

+0

不,這些都不包括JAR文件到內存中的映射。您應該在運行時向服務器詢問PID的總駐留內存。 – duffymo

+0

@duffymo因爲我已經將min max分配爲2GB,所以JVM不會消耗超過2GB的內存。 – youcanlearnanything

+1

錯了。您的Java應用程序不僅僅是堆。 https://blogs.oracle.com/jrockit/entry/why_is_my_jvm_process_larger_t – duffymo

回答

2

多少物理內存不JVM使用基於給定的參數?

除了參數之外,(虛擬)內存佔用量還會根據多種因素顯着變化。

我假設它使用2GB + 512MB的最小和最大值 - 共使用2.5GB物理內存?

首先,內存使用情況可能會比這更大。佔用額外的存儲器:

  • 的(加載)可執行文件和共享庫/ DLL中包含JVM本地代碼庫,

  • 離堆持有線程堆棧存儲器段,並

  • 斷 - 用於直接映射文件和其他內容的堆內存,由JVM,應用程序和第三方本機庫分配。

其次,我們在這裏討論的是虛擬內存使用情況,而不是物理內存使用情況。物理內存使用量將小於虛擬內存。

注意實際的物理內存使用率通常取決於對內存的整個系統的需求,並容易通過「分頁」你進出JVM波動與競爭性需求的系統交易。

當將交換空間來發揮作用的內存使用情況?

交換空間通常是分配爲作爲JVM處理虛擬內存頁面的「支持」。如果操作系統需要將物理內存頁面從JVM中分配給其他應用程序,那麼它「起作用」。 JVM的狀態下的那些頁面寫入到交換空間,然後頁被裝入另一個應用程序的狀態(例如,從該應用程序的交換空間),然後被映射到地址空間。

欲瞭解更多信息,請閱讀virtual memory的維基百科頁面。

相關問題