2010-06-01 72 views
5

我有一個運行Tomcat的6G內存的紅帽子盒子,我試圖弄清楚我在盒子上留下了多少內存。問題是,頂部& jconsole顯示一個數字(大約200M),並且系統監視器顯示不同的數字(大約2G)。有人知道有什麼不同嗎?RedHat Linux中的Java/Tomcat內存泄漏?

我不確定這裏是否有內存泄漏發生,但最高的內存消耗是一個需要2.2G內存的tomcat進程。下面

屏幕截圖: alt text alt text alt text alt text alt text

加入的遊離命令截圖: alt text

回答

4

顯然,頂部告訴你,Tomcat只使用了38%的可用內存。你的問題(如果有問題的話)是使用剩餘62%的內存。

我懷疑它被用於光盤塊/文件系統緩存。 (運行free命令,我希望您應該看到「緩存」的值高,大小與缺頁大小大致相當。)

如果您的系統在緩存中有大量頁面,則它是好東西。所有這些高速緩存的磁盤塊都將使讀取訪問您的文件系統更加快速。 (如果操作系統需要更重要的物理頁面......就像正在運行的應用程序......它可以快速從光盤緩存中回收它們。)

+0

感謝Stephen C,我添加了免費的命令截圖。我想我不必擔心它,因爲緩存是一件好事。 – rmartinus 2010-06-01 02:04:26

+0

有沒有辦法找出哪個進程佔用了緩存? – rmartinus 2010-06-01 02:15:54

+0

@ black-rocky - 沒有。操作系統不會將光盤塊緩存中的內容與任何進程相關聯。但是這並不重要,因爲正如我所說,緩存中的頁面將按需收回。 – 2010-06-01 03:16:45

1

系統監視器顯示存儲器是如何被使用的Tomcat進程是2G [最大堆大小已設定分配]。

在Linux上嘗試與free -m比較它顯示當前的空閒內存。

1

什麼是「free -t」顯示?我想知道其中一個數字是否包含緩存的文件系統數據(從某種意義上講,它是用於內存的,因爲它可以在任何時候被清除,如果有必要的話,它是免費的)。