Android 获取渐变错误“;无法为对象堆保留足够的空间;在Intellij理念中不断

Android 获取渐变错误“;无法为对象堆保留足够的空间;在Intellij理念中不断,android,cordova,intellij-idea,gradle,visual-studio-2015,Android,Cordova,Intellij Idea,Gradle,Visual Studio 2015,所以我有一个内存分配问题。有时有效,有时无效。我已经在那里多次阅读并尝试过这个建议。有时-Xms512m-Xmx768m起作用,有时-Xms256m-Xmx512m。我厌倦了在IntelliJ中的构建、执行、部署>构建工具>渐变>渐变VM选项设置下调整此设置。没有一个设置可以一劳永逸地解决这个问题吗 我的Windows 7计算机上有16GB的RAM,我正在运行IntelliJ IDEA EAP 14 build 138.2210.3,64位版本。Android Gradle构建插件v0.12 我

所以我有一个内存分配问题。有时有效,有时无效。我已经在那里多次阅读并尝试过这个建议。有时
-Xms512m-Xmx768m
起作用,有时
-Xms256m-Xmx512m
。我厌倦了在IntelliJ中的
构建、执行、部署>构建工具>渐变>渐变VM
选项设置下调整此设置。没有一个设置可以一劳永逸地解决这个问题吗

我的Windows 7计算机上有16GB的RAM,我正在运行IntelliJ IDEA EAP 14 build 138.2210.3,64位版本。Android Gradle构建插件v0.12

我怀疑gradle没有在64位模式下运行,否则它将有约7GB的可用内存。为什么不利用这个呢

编辑:


我在VisualStudio2015中,在Windows10下使用Cordova5.1.1时遇到了相同的错误。
请参阅下面我的解决方案。

安装64位Java为我解决了这个问题

在我的情况下,打开的东西太多了。释放内存使它工作。

这也发生在我身上,让我发疯。可能是可用的内存(ram)是碎片化的。虽然您有足够的可用内存,但没有连续的512MB块可用,它都被分割成更小的块!这就是为什么你只能“有时”看到它

有些事情值得一试:

  • 检查内存是否不足,尝试关闭其他应用程序。这种情况有时会发生在我身上,即使我的8GB中还有一个很好的3GB空闲空间!3GB可以分为小于512MB的块[例如:如果有-Xmx512m]。。。重新启动是一种整理内存碎片的方法。或者关闭firefox,这将释放一个gig;-)

  • 另外,令人惊讶的是,请检查您的交换空间[可用磁盘空间]!取决于机器/JVM/etc实现的类型。但是,如果交换空间不足,并且内存碎片化,这可能是另一个原因

  • 将-Xmx降低到-Xms128m-Xmx512m,以便更容易找到连续的可用内存块[128m]。如果gradle真的至少需要5.12亿美元,这可能不是个好主意。考虑到我们谈论的是gradle,忽略这一要点(可能是其他案例的有用提示/值得注意)

  • 在~/.gradle/gradle.properties属性org.gradle.jvmargs中仔细检查Xms/Xmx

  • 使用idea64.exe[64位],如果您认为IDEA使用了错误的JDK[32位],在最新的Intellij IDEA[14.1.3]中,请转到“设置”->“构建、执行、部署”->“Gradle”:“使用默认包装器”并选择您喜欢的Gradle JVM(如果您认为它使用了错误的JVM,您将在此处看到它)

  • 最后,这只是一个猜测:在前面的项目中,我想知道您是否选择了“使用JDK项目”",如果这样可以更容易地找到连续内存。我不确定这是否意味着Gradle将使用intellij IDEA已经保留的内存块。因此,您没有两个进程,而是只有一个进程,并且可以在IDEA启动时保留一个更大的内存块。但我不确定这是否准确,这是否是建议intellij的一个选项


我同意你的看法,在gradle集成出现之前,我从来没有遇到过IDEA的内存问题[完全没有问题]。

虽然这个问题有点老,但我想提出问题的(可能的)根源:JVM在启动时请求一整块内存。如果找不到,则“无法保留…”出现错误。John Pape在IBM的devblog上写了一篇关于此问题的启发性文章:

这为我解决了问题:

  • 变体a:使用64位版本的Java,以便为Java提供更大的可用连接内存
  • 变量b:32位Java使用较小的XMX数量。在gradle.properties文件中,我只使用
    org.gradle.jvmargs=-Xmx150m
    ,gradle没有问题

我在Visual Studio 2015中,在Windows 10下的cordova 5.1.1中遇到了相同的错误

要解决此问题,请设置此环境变量:

_JAVA_OPTIONS=-Xmx512M
  • 右键单击开始按钮并打开“系统”
  • 搜索“高级系统设置”并打开它
  • 单击“环境变量…”按钮
  • 在系统变量中,单击“新建…”
  • 新变量名:_JAVA_OPTIONS
  • 新变量值:-Xmx512M
  • 单击“确定”
  • 重新启动Visual Studio,以便拾取变量
  • 这篇文章为我指明了正确的方向。我确实稍微修改了一下说明,使它们适合Windows 10


    希望它能帮助别人!

    在您的android文件夹中有一个gradel.properties文件,并添加以下行:

    org.gradle.jvmargs=-XX\:MaxHeapSize\=256m -Xmx256m
    
    我在使用Intellij和Flatter时遇到了这个问题。另外,您可能会发现添加的另一个有用属性是声明JDK的位置

    org.gradle.java.home=C:\\Your\\JDK\\path
    

    谢谢!这个答案刚刚帮助我升级了Android Studio的新版本。谢谢,+1。这个答案解决了在Windows上使用Apache Cordova时的类似问题。谢谢Bjoerg,+1,太好了。解决了我在Windows上使用Cordova时的问题。+1这个解决方案对我来说适用于Ionic 3.5.0和Windows10@nilzor、JDK或JRE?我安装了32位和64位d和32位版本在路径中。