【问题标题】:GC overhead limit exceeded in tomcat in production server生产服务器中的 tomcat 超出了 GC 开销限制
【发布时间】:2015-07-10 04:51:52
【问题描述】:

在服务器中,我们有 >4GB 的可用 RAM,但我们在该服务器上遇到了以下错误代码。而且我知道这个错误意味着 GC(垃圾收集器)试图释放内存,但几乎无法完成任何事情。默认情况下,当 JVM 花费超过 98% 的总时间在 GC 上,并且在 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

【问题讨论】:

标签: java tomcat garbage-collection server


【解决方案1】:

正如您正确指出的那样,垃圾收集器花费了 98% 的时间和 GC,并且只能(或更少)恢复 2% 的堆空间。这看起来是对象在堆上分配得非常快的情况。 您可以使用 EclipseMemoryAnalyzer 进行堆转储并进行分析,以检查在堆上分配了哪些对象。这应该是代码中的问题,而不是 Tomcat 的问题(或者您的应用程序需要更大的堆大小)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 2017-06-12
    相关资源
    最近更新 更多