2013-03-05 34 views
3

正在使用Java 5開發的Java應用程序。我們正在嘗試將其更新到Java 6,因此我們已經開始使用Jdk1.6。它運行24小時,我們沒有安排任何及時的反彈這個應用程序。Java應用程序中的內存不足錯誤

這是一個基於線程的應用程序,在所有92個線程中運行從MQ隊列獲取消息以將數據插入到Oracle表中。

我的問題是我們有時會在Java 6中發現內存不足的錯誤。是因爲我們應該在每週/每月一次及時反彈應用程序嗎?或者我們應該檢查代碼中的任何內存泄漏?

只是好奇地知道GC足以長時間運行應用程序或始終需要重新啓動?

+4

'這是因爲我們應該在每週/每月及時反彈應用程序一次。您應該修復它...使用jmap -dump獲取堆轉儲,並查看Eclipse Memory Analyzer發生了什麼。 '只是很想知道GC是否足以長時間運行應用程序,或者始終需要重新啓動?'不需要重新啓動。一個整潔的應用程序,即使高調應該能夠永遠運行... – ppeterka 2013-03-05 13:19:01

+0

@ppeterka這是我相信,Java應用程序應該運行沒有這樣的問題..我試圖檢查使用JConsole,因爲這是在Linux服務器上很難分析使用.. ..肯定會轉儲分析它。 – AmitN 2013-03-05 13:26:55

回答

0

GC很適合長時間運行。您可能有內存泄漏,或者您的應用程序本身恰好使用比Java VM允許的更多堆空間。

您可以嘗試使用-Xmx1gsomething like it運行您的應用程序,爲應用程序提供更多堆空間。