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

问题:

我执行我的JUnit测试时收到这个错误消息:

java.lang.OutOfMemoryError: GC overhead limit exceeded

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

回答:

这个消息意味着由于某种原因,垃圾收集器花费的时间过多(默认为进程所有CPU时间的98%),并且在每次运行中恢复非常少的内存(默认为堆的2%)。
这有效地意味着您的程序停止进行任何进度,并且忙碌只能随时运行垃圾回收。
为了防止您的应用程序在没有完成任何操作的情况下清除CPU时间,JVM会抛出此Error,以便您有机会诊断问题。
我看到这种情况的罕见情况是某些代码在已经非常受内存限制的环境中创建了大量临时对象和大量弱引用对象。
查看this article详细信息(具体this part)。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Error java.lang.OutOfMemoryError: GC overhead limit exceeded

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

81 − 72 =