我的程序使用-Xms10240m -Xmx10240m運行。我用top來檢查內存,大小是3.5g,比xms valuse小。 use topjava堆內存大於TOP
但是,當我使用jmap -heap時,我可以看到堆大小約爲10g。 use jmap
是什麼原因?
謝謝。
我的程序使用-Xms10240m -Xmx10240m運行。我用top來檢查內存,大小是3.5g,比xms valuse小。 use topjava堆內存大於TOP
但是,當我使用jmap -heap時,我可以看到堆大小約爲10g。 use jmap
是什麼原因?
謝謝。
使用例如-Xms10g -Xmx10g
,當JVM開始,它會詢問操作系統分配的10g內存將用於堆。 和OP-系統將嘗試分配的JVM(顯示爲VIRT)的內存,但系統沒有答應ü它將分配物理內存,它可能掉;)
但你會發現VIRT仍不是10g,原因是10g是爲堆大小,一個JVM包括更多的堆,例如,堆棧,permgen(熱點JDK8,openJDK似乎沒有permgen,修復我,如果我錯了),本地堆棧,代碼,文件等。
而RES是用於真實物理內存的使用的是,它包含了新的對象,方法等等,還不止是堆。
感謝您的信息,這是正確的用於JDK8的HotSpot中已刪除永久生成。 –
是的,jdk8 +刪除permgen – Five
可能由http://stackoverflow.com/questions/561245/virtual-memory-usage-from-java-under-linux-too-much-memory-used複製 – waltersu