Android studio 由于JVM堆空间耗尽,守护进程正在过期

Android studio 由于JVM堆空间耗尽,守护进程正在过期,android-studio,gradle,jvm,android-studio-3.5,Android Studio,Gradle,Jvm,Android Studio 3.5,我刚刚将Android Studio更新为3.5 Beta 1,我得到了 由于JVM堆空间耗尽,守护进程正在过期 生成运行时显示消息。此外,构建需要更多的时间来完成。有人对此有任何想法吗?这可以通过增加项目配置的最大堆大小来解决 通过IDE: 将以下行添加到gradle.properties文件中。可根据RAM可用性配置以下内存大小 org.gradle.daemon=true org.gradle.jvmargs=-Xmx2560m 通过GUI: 在设置中,搜索“内存设置”,并根据系统RAM

我刚刚将Android Studio更新为3.5 Beta 1,我得到了

由于JVM堆空间耗尽,守护进程正在过期


生成运行时显示消息。此外,构建需要更多的时间来完成。有人对此有任何想法吗?

这可以通过增加项目配置的最大堆大小来解决

通过IDE:

将以下行添加到gradle.properties文件中。可根据RAM可用性配置以下内存大小

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2560m
通过GUI:

在设置中,搜索“内存设置”,并根据系统RAM可用性增加IDE最大堆大小和守护进程最大堆大小


通过配置以下各项,我能够为我的React Native项目解决此问题:

// gradle.properties
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

解决方案是增加Android构建内存。


当你向你的应用程序添加更多模块时,Android构建系统上会有令人难以置信的需求,默认内存设置将无法工作。为了避免在Android构建期间出现OutOfMemory错误,您应该取消注释/Android/gradle.properties中的备用gradle内存设置:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
您可以在android文件夹中找到gradle.properties

附言

我们正在做什么以及为什么它有帮助?

让我澄清一些基本术语,以便理解整个事情

守护进程:-守护进程是作为后台进程运行的计算机程序,而不是由交互用户直接控制

Android Studio 2.1启用了一项新功能:Dex-In-Process,它可以显著提高完全清理构建的速度,并提高即时运行性能

要利用进程中的索引
,您需要修改gradle.properties文件,并使用org.gradle.jvmargs属性将分配给gradle守护进程VM的内存量增加1 Gb,至少增加2 Gb:

指定用于守护进程的JVM参数。 该设置对于调整内存设置特别有用

org.gradle.jvmargs=-Xmx2048m
默认值:

-Xmx10248m -XX:MaxPermSize=256m
默认的Gradle守护进程VM内存分配为1GB,这不足以支持dexInProcess,因此要充分利用这一优势,您需要将其设置为至少2GB

Dex-in-process的工作原理是允许多个Dex进程在同一个VM中运行,该VM也与Gradle共享,这就是为什么在启用额外内存之前需要分配额外内存的原因-该内存将在Gradle和多个Dex进程之间共享

如果您已经将模块级build.gradle文件中的javaMaxHeapSize增加到超过默认值1 GB,则需要相应地增加分配给gradle守护进程的内存

当有足够的内存分配时,默认情况下会启用进程中的索引,从而提高总体构建性能,并消除启动多个并行VM实例的开销。结果是所有构建时间都有了显著的改进,包括即时运行、增量构建和完整构建

资料来源:


当您向应用程序添加更多模块时,Android build系统上出现了令人难以置信的需求,默认内存设置将无法工作。为了避免在Android构建期间出现OutOfMemoryErrors,您应该取消注释/Android/gradle.properties中的备用gradle内存设置:


org.gradle.jvmargs=-Xmx2048m-XX:MaxPermSize=512m-XX:+HeapDumpOnOutOfMemoryError-Dfile.encoding=UTF-8
只需取消对所选行的注释即可

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

看看这是否有帮助:@JurajMartinka是的,你是对的。它在增加IDE最大堆大小后得到修复。因此,他们在最新的Android Studio 3.5中引入了一个名为内存设置的新选项。这一切都是为了修复Android Studio中的内存泄漏。当我添加此代码时,react-native vector图标工作不正常。运行
react-native链接
,重新安装,然后
react-native vector图标
将再次工作。javaMaxHeapSize“4g”为我工作:-)你能解释一下这是做什么的,为什么它有帮助吗?把来源也放进去。Hello@KailashUniyal如果我在android studio的gui中堆大小为2048,而我仍然得到“由于JVM堆空间耗尽而导致守护进程过期”怎么办?@abdi尝试将此
org.gradle.jvmargs=-Xmx2048m-XX:MaxPermSize=512m-XX:+heapdumponAutofmemoryError-Dfile.encoding=UTF-8
放入gradle.properties中。如果仍然不工作,那么很抱歉,我不知道如何修复这个问题。在android/gradle中,
org.gradle.jvmargs=-Xmx2048m-XX:MaxPermSize=512m-XX:+heapdumponooutofmemoryerror-Dfile.encoding=UTF-8
。属性非常有效。谢谢@KailashUniyalFWIW org.gradle.daemon默认为true,因此不需要该行。
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8