Spring Boot应用程序-java.lang.OutOfMemoryError问题:超出了GC开销限制

问题描述 投票:0回答:1

我的SpringBoot应用程序有java.lang.OutOfMemoryError: GC overhead limit exceeded问题。

我可以看到如下日志:

  Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: GC overhead limit exceeded.

此外,当我在应用程序中工作时,cpu很高(99%)。我认为它是与XMX连接的。那么,如何检查为此应用程序设置的xmx大小?还是其他问题呢?提前致谢!

java spring-boot out-of-memory
1个回答
0
投票

我的SpringBoot应用程序有java.lang.OutOfMemoryError: GC overhead limit exceeded问题。

我可以看到如下日志:

Handler dispatch failed; nested exception is 
java.lang.OutOfMemoryError: GC overhead limit exceeded. 

这是一个常见错误。

这意味着您的应用程序的JVM花太多时间运行垃圾收集器。通常发生这种情况是因为nearly空间不足,并且GC必须越来越频繁地运行才能继续运行。

此外,当我在应用程序中工作时,cpu很高(99%)。

这是预料之中的;见上文。

我认为它与xmx相关。

是的,与此有关。

一种可能性是您的Web应用程序正在执行的任务需要的内存比-xmx设置所允许的更多。增加-xmx将解决问题...直到完成更大的任务。此时,您需要查看是否可以优化内存使用率,或者购买一台具有更多内存的计算机。 (您银行里有多少钱?)

[另一种可能性是您的Web应用存在内存泄漏。如果那是问题,那么增加-xmx并不能解决问题。您的Web应用可能会再次遇到OOME的情况...尽管它可能需要更长的时间才能发生。

我建议您找到并阅读有关修复内存泄漏的好文章。假定这是一个泄漏……直到您找到明确的证据为止。

所以我如何检查为此应用程序设置的xmx大小?

取决于您如何运行springboot应用程序。例如,本文介绍了如何使用嵌入式Tomcat。

© www.soinside.com 2019 - 2024. All rights reserved.