.jpg)
我在执行测试时收到此错误消息:JUnit
java.lang.OutOfMemoryError: GC overhead limit exceeded
我知道什么是 ,但 GC 开销限制是什么意思?我该如何解决这个问题?OutOfMemoryError

网友回答:
引用Oracle的文章“Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning”:
GC 时间过长和内存不足错误
如果在垃圾回收中花费的时间过多,并行收集器将引发 OutOfMemoryError:如果超过 98% 的总时间用于垃圾回收,并且恢复的堆少于 2%,则会引发 OutOfMemoryError。此功能旨在防止应用程序长时间运行,同时由于堆太小而几乎没有进展。如有必要,可以通过将选项添加到命令行来禁用此功能。
-XX:-UseGCOverheadLimit
编辑:看起来有人可以打字比我?快

网友回答:
此消息意味着由于某种原因,垃圾回收器占用了过多的时间(默认情况下占进程所有 CPU 时间的 98%),并且在每次运行中恢复的内存非常少(默认情况下为堆的 2%)。
这实际上意味着您的程序停止执行任何进度,并且始终忙于仅运行垃圾回收。
为了防止您的应用程序在不完成任何操作的情况下占用 CPU 时间,JVM 会抛出此问题,以便您有机会诊断问题。Error
我看到这种情况发生的罕见情况是,某些代码在已经非常内存受限的环境中创建了大量临时对象和大量弱引用对象。
查看 Java GC 调优指南,该指南适用于各种 Java 版本,并包含有关此特定问题的部分:

网友回答:
如果您确定程序中没有内存泄漏,请尝试:
-Xmx1g-XX:+UseConcMarkSweepGC如有必要,可以通过将选项添加到命令行来禁用限制检查。-XX:-UseGCOverheadLimit
模板简介:该模板名称为【错误 java.lang.OutOfMemoryError: 超出 GC 开销限制】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。