我有XMX在Linux上運行的Java應用程序設置爲1200M的Java在Linux上 - RES VS totalMemory()
當我檢查在TOP的過程中,我看到這樣的數字: VIRT =1412米 RES =237米 SHR =58米
Java應用程序裏面,我打印調用Runtime.getRuntime()totalMemory()每分鐘有多少顯示:
totalMemory()= 108M
爲什麼小號RES和totalMemory()的值有很大差異?
我的理解(這可能是錯誤的) - totalMemory()是現在在堆中使用的內存。 RES - 進程使用的實際RAM內存。
作爲更新: 是的,我希望RES> totalMemory() - 但這裏的差別是237MB - 108MB = 129MB。所以如果有人問我,我的Java應用程序可以使用的最大內存是多少,它應該是1200MB +「某事」 - 問題是如何知道「某事」......是150MB? 200MB? 300MB?
是的,我期望RES> totalMemory() - 但這裏的差別是237MB - 108MB = 129MB。所以如果有人問我,我的Java應用程序可以使用的最大內存是多少,它應該是1200MB +「某事」 - 問題是如何知道「某事」......是150MB? 200MB? 300MB? – sunny8107 2010-08-17 18:42:26
它可以設置Heap和永久區域的最大尺寸,如果內存足夠,它不受限制。 Someting就像永久的(可以設置),代碼生成,GC,JNI分配memonry等。 您可以參考這裏: http://www.slideshare.net/gengmao/inside-the-jvm-memory-management-and-troubleshooting 它可以幫助你。 – Mercy 2010-08-18 01:53:33