当我执行JUnit测试时,我得到了这个错误消息:
java.lang.OutOfMemoryError: GC overhead limit exceeded
我知道什么是OutOfMemoryError,但是GC开销限制意味着什么?我怎么解决这个问题?
当我执行JUnit测试时,我得到了这个错误消息:
java.lang.OutOfMemoryError: GC overhead limit exceeded
我知道什么是OutOfMemoryError,但是GC开销限制意味着什么?我怎么解决这个问题?
当前回答
下面的方法对我很有效。只需添加以下片段:
android {
compileSdkVersion 25
buildToolsVersion '25.0.1'
defaultConfig {
applicationId "yourpackage"
minSdkVersion 10
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "4g"
}
}
其他回答
您可以尝试通过参考此映像来更改服务器设置,并增加用于处理的内存大小 流程更改以黄色突出显示
你也可以通过打开cmd-> set _java_opts - xmx2g来改变java堆 2g(2gb),这取决于程序的复杂程度
尽量少使用常数变量和临时变量
试试这个
打开构建。gradle文件
android {
dexOptions {
javaMaxHeapSize = "4g"
}
}
@Buhb 我在一个普通的spring-boot web应用程序的main方法中复制了这个过程。代码如下:
public static void main(String[] args) {
SpringApplication.run(DemoServiceBApplication.class, args);
LOGGER.info("hello.");
int len = 0, oldlen=0;
Object[] a = new Object[0];
try {
for (; ; ) {
++len;
Object[] temp = new Object[oldlen = len];
temp[0] = a;
a = temp;
}
} catch (Throwable e) {
LOGGER.info("error: {}", e.toString());
}
}
引起come的示例代码也是来自oracle java8语言规范。
在build.gradle(Module:app)文件中增加javaMaxHeapsize
dexOptions {
javaMaxHeapSize "1g"
}
to(在gradle中添加这一行)
dexOptions {
javaMaxHeapSize "4g"
}
您还可以通过将此添加到gradle中来增加内存分配和堆大小。属性文件:
org . gradle。jvmargs = -Xmx2048M -XX: MaxHeapSize \ = 32g
它不需要2048M和32g,你想要多大就有多大。