Tomcat
記憶體管理分析
我正在為我的 Java Web 應用程序進行記憶體管理分析,
在啟動我的 tomcat 之前,可用記憶體約為 595 MB,一旦我啟動伺服器,可用記憶體將變為 151 MB。當我進行堆轉儲時,對象佔用了 262 MB。
那麼僅tomcat會佔用剩餘的181 MB嗎?
另一個問題是,我對 500 個使用者進行了負載測試。可用記憶體達到 8MB,當我在這裡進行堆轉儲時,大約是 265MB。所以可用空間 151 MB 減少到 8MB,可能是什麼原因
首先,閱讀並理解http://www.linuxatemyram.com/為什麼“空閒”記憶體數量比您想像的要低得多。
其次,Java 會預先從作業系統分配其整個堆,儘管在實際使用頁面之前它不會接觸或弄髒頁面。這為您提供了頂級輸出,例如:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9521 pjc 17 0 1288m 524m 25m S 0.0 13.3 58:31.92 java
那是我在執行 Eclipse;VIRT 列顯示 Java 的最大堆大小可能為 1024Mb;最重要的是分配用於儲存已編譯 Java 的庫和記憶體。然而,目前只有 524Mb 在 RAM 中。
您的堆轉儲是您的應用程序正在使用多少記憶體的最佳指南 - 前提是在它完成垃圾收集之後。