2015-07-10 143 views
0

在服務器中,我們有> 4GB的可用RAM,但是我們卻在該服務器上面臨以下錯誤代碼。而且我也知道這個錯誤意味着GC(垃圾收集器)試圖釋放內存,但幾乎無法完成任何事情。默認情況下,它發生在JVM花費超過總時間的98%,GC之後的時間少於堆的2%的情況下恢復。在生產服務器中的tomcat中超出了GC開銷限制

那麼,我們該如何處理服務器上的問題或者可能是Tomcat服務器。請建議我。由於

Status Code: 500 
Message: Handler processing failed; nested exception is java.lang.OutOfMemoryError: GC overhead limit exceeded 
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/8.0.7 Safari/600.7.12 
Exception: java.lang.OutOfMemoryError: GC overhead limit exceeded 
+0

什麼是您的JVM內存設置,系統內存是什麼? – Mikaveli

+0

[Error java.lang.OutOfMemoryError:超出GC開銷限制]的可能重複(http://stackoverflow.com/questions/1393486/error-java-lang-outofmemoryerror-gc-overhead-limit-exceeded) – Mikaveli

回答

0

正如你正確地指出,垃圾收集花費的時間和GC,並能只能恢復(或更少)的98%的堆空間的2%。這看起來是物體被快速分配到堆上的情況。 您可以使用EclipseMemoryAnalyzer進行堆轉儲和分析,以檢查在堆上分配了哪些對象。這應該是代碼中的問題,而不是Tomcat(或者您的應用程序需要更多的堆大小)。

相關問題