【问题标题】:Spring Boot application- problem with java.lang.OutOfMemoryError: GC overhead limit exceededSpring Boot 应用程序 - java.lang.OutOfMemoryError 问题:超出 GC 开销限制
【发布时间】:2020-07-05 18:16:55
【问题描述】:

我的 SpringBoot 应用遇到了java.lang.OutOfMemoryError: GC overhead limit exceeded 的问题。

我可以看到如下日志:

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

此外,当我在应用程序中工作时,cpu 非常高(99%)。 我认为它与XMX有关。那么如何检查为此应用程序设置的 xmlx 大小呢?或者是别的什么问题? 提前致谢!

【问题讨论】:

    标签: java spring-boot out-of-memory


    【解决方案1】:

    我的 SpringBoot 应用遇到了java.lang.OutOfMemoryError: GC overhead limit exceeded 的问题。

    我可以看到如下日志:

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

    这是一个常见的错误。

    这意味着您的应用程序的 JVM 花费了太多时间来运行垃圾收集器。这通常是因为您的空间几乎用完了,而 GC 必须越来越频繁地运行才能继续运行。

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

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

    我认为它与xmx有关。

    是的,它与此有关。

    一种可能性是您的 web 应用程序正在执行的任务需要比 -xmx 设置允许的更多内存。增加-xmx 将解决问题……直到您完成更大的任务。这时候你需要看看能不能优化内存使用,或者买一台内存更大的机器。 (你银行里有多少钱?)

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

    我建议你找到并阅读一篇关于修复内存泄漏的好文章。假设它是泄漏......直到你找到明确的证据证明它不是。

    那么我如何检查为这个应用程序设置的 xmlx 大小?

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

    【讨论】:

      猜你喜欢
      • 2017-12-27
      • 1970-01-01
      • 2020-09-08
      • 2020-07-24
      • 1970-01-01
      • 2019-06-29
      • 2015-04-25
      • 1970-01-01
      相关资源
      最近更新 更多