Linux
了解 Java 的記憶體使用情況(JIRA/Tomcat)
我有一個 CentOS 虛擬化伺服器,我剛剛安裝了Jira。每當 Jira 執行時,我都無法理解 Sun JVM 發生了什麼。Java 的最大堆大小設置為 384MB,但 Java 實例佔用了 1GB 以上。
我是 linux 伺服器管理的新手,但我知道它們對 JVM 來說是額外的成本,而且程序記憶體報告並不總是準確的(尤其是執行緒,我相信 Jira 會大量使用它),但我認為
free -m
給出了更準確的圖片總記憶體使用量。比較有和沒有 Jira 的系統記憶體告訴我它使用了超過 1GB。我只有 1GB 的物理記憶體和 768 個交換/虛擬記憶體。當我使用
vmstat
它時說我沒有任何虛擬頁面,但我可能應該有。我擔心我只執行一個程序,而我的伺服器已經用盡了。我如何確定我的系統由於資源使用而(或可能)處於癱瘓狀態?謝謝。
好的 - 有幾件事要記住。首先,在現代 Linux 核心中,執行緒只是共享一些資源和標誌的簡單程序,尤其是地址空間。所以是的,像’top’這樣的輸出中的執行緒會使事情變得非常混亂。範例:我們的 Oracle 伺服器有大約 30 個執行緒正在執行,只是顯示為“oracle”——它們每個都顯示為消耗 38 GB 的記憶體。乍一看很有趣。
好的 - 上面評論中的建議是錢。使用“pmap”不僅可以準確查看程序的記憶體消耗,還可以查看該記憶體使用的細分。共享庫條目 (.so) 條目不必擔心。你真正關心的是
$$ anon $$條目和$$ stack $$入口。看看你能不能得到這些總數。這將使您真實地了解程序消耗了多少非共享記憶體。