java OutOfMemoryError:超出了GC开销限制
在安卓studio1.5.1中,只需将源代码从一个系统移动到另一个系统,即使干净的构建成功,但在代码运行时,我会遇到这种错误
java.lang.OutOfMemoryError: GC overhead limit exceeded Error:Execution failed for task ':app:dexDebug'. > com.安卓.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-openjdk-amd64/bin/java'' finished with non-zero exit value 3
我在应用程序中添加了以下代码。格拉德尔还:
dexOptions {
javaMaxHeapSize "4g"
}
# 1 楼答案
详细信息
"GC overhead limit exceeded"
表示垃圾收集器一直在运行,Java程序的进度非常缓慢。在垃圾收集之后,如果Java进程花费大约98%以上的时间进行垃圾收集,并且如果它正在恢复堆的不到2%,并且到目前为止一直在进行最后5次(编译时常量)连续垃圾收集,则Java进程将停止。将抛出lang.OutOfMemoryError。通常会引发此异常,因为活动数据的数量几乎无法放入Java堆,因此新分配的可用空间很小。 操作:增加堆大小。爪哇。超出GC开销限制的lang.OutOfMemoryError异常可以使用命令行标志-XX:-UseGCOverdeLimit关闭这是从Oracle Java文档中获取的
# 2 楼答案
GC overhead limit exceeded
意味着您的应用程序占用了所有堆,垃圾收集器无法清理足够的空间来运行程序因此,内存中有太多必要的数据,或者应用程序中存在内存泄漏(即可以从应用程序根目录访问但不再需要的引用)-只有进一步的应用程序分析才能提供更多详细信息
# 3 楼答案
您可以通过添加
查看清单文件,看看它是否解决了您的问题。 但是你应该在你的应用程序中寻找内存泄漏,因为OutOfMemoryError通常是内存管理不好的结果
# 4 楼答案
更新的gradle插件默认使用R8进程进行代码压缩。您可以通过在渐变中添加以下行来尝试此操作。项目