Tomcat

記憶體管理分析

  • February 29, 2012

我正在為我的 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 中。

您的堆轉儲是您的應用程序正在使用多少記憶體的最佳指南 - 前提是在它完成垃圾收集之後。

引用自:https://serverfault.com/questions/364417