我在JBoss 6上運行的Java EE 6應用程序最近開始有內存問題。如何解決JBoss中的OutOfMemoryError問題?
形勢
- 生產服務器。
- 使用JPA2/Hibernate進行默認緩存設置的中小型應用程序。 〜170班。
- 數據庫大小〜1.8gb,其中90%屬於二進制數據,由servlet簡單地取回而沒有任何特殊的緩存。
- 會話超時最近從2個小時增加到10
- JVM配置:-Xrs -Xms1024m -Xmx1024M -XX:MaxPermSize參數= 512M -Dsun.rmi.dgc.client.gcInterval = 3600000 -server
- 的JBoss作爲服務運行。
- 幾乎所有控制器類中ViewScope
兩個問題考慮到這些事實:
我將如何解決這些OOMEs? JConsole未找到作爲服務運行的JVM。理想情況下,我必須能夠檢查諸如會話之類的相關對象以找到記憶小偷。
這個OOME是合法的嗎,考慮到增加的會話超時,解決方案只是增加堆大小?該應用程序自2011年9月以來一直在使用,沒有任何早期的內存問題。會話超時大約在兩個月前大幅增加。
對不起,我之前沒有進一步處理這個問題,現在似乎已經解決了。堆轉儲參數將是一個很好的起點,問題再次出現,將VisualJVM和類似於生產服務器的附件看起來很難。無論如何,我會接受你的答案,因爲它包含堆分析技巧。 – 2012-06-25 12:54:45