在服务器中,我们有> 4GB的可用内存,但我们在该服务器上面临以下错误代码。而且我也知道错误意味着GC(垃圾收集器)试图释放内存,但几乎无法完成任何事情。默认情况下,当JVM在GC中花费超过总时间的98%以及在GC之后减少2%的堆被恢复时,就会发生这种情况。
那么,我们如何处理服务器上的问题或者可能是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 :(得分:0)
正如你正确地指出,垃圾收集器花费了98%的时间和GC,并且能够仅恢复(或更少)2%的堆空间。这看起来是对象在堆上非常快速地分配的情况。 您可以使用EclipseMemoryAnalyzer进行堆转储和分析,以检查在堆上分配的对象。这应该是代码中的问题而不是Tomcat(或者您的应用程序需要更多堆大小)。