当我执行JUnit测试时,我得到了这个错误消息:

java.lang.OutOfMemoryError: GC overhead limit exceeded

我知道什么是OutOfMemoryError,但是GC开销限制意味着什么?我怎么解决这个问题?


当前回答

您可以尝试通过参考此映像来更改服务器设置,并增加用于处理的内存大小 流程更改以黄色突出显示

你也可以通过打开cmd-> set _java_opts - xmx2g来改变java堆 2g(2gb),这取决于程序的复杂程度

尽量少使用常数变量和临时变量

其他回答

对我来说,以下步骤是有效的:

打开eclipse.ini文件 改变 -Xms40m -Xmx512m 来 -Xms512m -Xmx1024m 重新启动Eclipse

在这里看到的

重启MacBook帮我解决了这个问题。

根据Java[8]平台,标准版故障处理指南,错误原因:(强调和换行符添加)

[…“GC overhead limit exceeded”表示垃圾收集器一直在运行,Java程序进展非常缓慢。 在垃圾收集之后,如果Java进程花费大约98%的时间进行垃圾收集,如果它回收的堆不到2%,并且到目前为止已经连续进行了5次(编译时间常数)垃圾收集,则抛出Java .lang. outofmemoryerror。[…]

Increase the heap size if current heap is not enough. If you still get this error after increasing heap memory, use memory profiling tools like MAT ( Memory analyzer tool), Visual VM etc and fix memory leaks. Upgrade JDK version to latest version ( 1.8.x) or at least 1.7.x and use G1GC algorithm. . The throughput goal for the G1 GC is 90 percent application time and 10 percent garbage collection time Apart from setting heap memory with -Xms1g -Xmx2g , try -XX:+UseG1GC -XX:G1HeapRegionSize=n -XX:MaxGCPauseMillis=m -XX:ParallelGCThreads=n -XX:ConcGCThreads=n

看看更多关于G1GC的相关问题

G1上的Java 7 (JDK 7)垃圾收集和文档 生产环境中的Java G1垃圾收集 Oracle technetwork关于GC优化的文章

您可以尝试通过参考此映像来更改服务器设置,并增加用于处理的内存大小 流程更改以黄色突出显示

你也可以通过打开cmd-> set _java_opts - xmx2g来改变java堆 2g(2gb),这取决于程序的复杂程度

尽量少使用常数变量和临时变量

您还可以通过将此添加到gradle中来增加内存分配和堆大小。属性文件:

org . gradle。jvmargs = -Xmx2048M -XX: MaxHeapSize \ = 32g

它不需要2048M和32g,你想要多大就有多大。