我的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大小?还是其他问题呢?提前致谢!
我的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。