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

  • 回答 (2)
  • 关注 (0)
  • 查看 (491)

我执行我的JUnit测试时遇到此错误消息:

java.lang.OutOfMemoryError: GC overhead limit exceeded

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

MOISTGMOISTG提问于
麻醉火计算机回答于

如果您确定程序中没有内存泄漏,请尝试:

  1. 例如,增加堆大小-Xmx1g。
  2. 启用并发低暂停收集器-XX:+UseConcMarkSweepGC。
  3. 尽可能重用现有对象以节省一些内存。

如有必要,可以通过将选项添加到命令行来禁用限制检查-XX:-UseGCOverheadLimit

HKC

红客学院 · 创始人 (已认证)

道可道 非常道 名可名 非常名回答于

如果在垃圾收集中花费太多的时间太少,GC会抛出这个异常。GC上的CPU时间占用了98%,只有不到2%的堆被恢复。

此功能旨在防止应用程序长时间运行,而由于堆太小,进行很少或没有进度。

您可以使用命令行选项关闭此功能 -XX:-UseGCOverheadLimit

扫码关注云+社区

领取腾讯云代金券