gpt4 book ai didi

java - 错误java.lang.OutOfMemoryError:超出了GC开销限制

转载 作者:行者123 更新时间:2023-12-03 05:54:26 27 4
gpt4 key购买 nike

执行JUnit测试时收到以下错误消息:

java.lang.OutOfMemoryError: GC overhead limit exceeded

我知道 OutOfMemoryError是什么,但是GC开销限制是什么意思?我该如何解决?

最佳答案

此消息表示由于某种原因,垃圾收集器占用了过多的时间(默认情况下为该进程所有CPU时间的98%),并且每次运行时恢复的内存很少(默认为堆的2%)。

这实际上意味着您的程序停止任何进展,并且一直在忙于仅运行垃圾回收。

为了防止您的应用程序浪费CPU时间而不做任何事情,JVM会抛出此Error,以便您有机会诊断问题。

我见过这种情况的罕见情况是,某些代码在已经非常受内存限制的环境中创建了大量的临时对象和大量的弱引用对象。

查看Java GC调整指南,该指南可用于各种Java版本,并且包含有关此特定问题的部分:

  • Java 11 tuning guide专​​门介绍了用于不同垃圾收集器的过量GC:
  • Parallel Collector
  • Concurrent Mark Sweep (CMS) Collector
  • 没有提及垃圾优先(G1)收集器的此特定错误情况。
  • Java 8 tuning guide及其Excessive GC section
  • Java 6 tuning guide及其Excessive GC section
  • 关于java - 错误java.lang.OutOfMemoryError:超出了GC开销限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45836833/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com