【问题标题】:ionic android build - not enough memory to start jvmionic android build - 没有足够的内存来启动 jvm
【发布时间】:2015-08-01 11:56:16
【问题描述】:

当尝试使用 ionic 和 gradle 创建一个 android apk 文件时,我得到一个错误

FAILURE: Build failed with an exception.

* What went wrong:
Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at http://gradle.org/docs/2
.2.1/userguide/gradle_daemon.html
Please read the following process output to find out more:
-----------------------
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.

D:\test\platforms\android\cordova\node_modules\q\q.js:126
                    throw e;
                          ^
Error code 1 for command: cmd with args: /s /c "D:\test\platforms\android\gradle
w cdvBuildDebug -b D:\test\platforms\android\build.gradle -Dorg.gradle.daemon=tr
ue"
ERROR building one of the platforms: Error: D:\test\platforms\android\cordova\bu
ild.bat: Command failed with exit code 1
You may not have the required environment or OS to build this project
Error: D:\test\platforms\android\cordova\build.bat: Command failed with exit cod
e 1
    at ChildProcess.whenDone (C:\Users\9923\AppData\Roaming\npm\node_modules\cor
dova\node_modules\cordova-lib\src\cordova\superspawn.js:131:23)
    at ChildProcess.emit (events.js:110:17)
    at maybeClose (child_process.js:1015:16)
    at Process.ChildProcess._handle.onexit (child_process.js:1087:5)

我正在尝试在 Windows 7 桌面上执行此操作。 我的 Java 内存设置如下。

D:\test>java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize Threa
dStackSize"
     intx CompilerThreadStackSize                   = 0               {pd produc
t}
    uintx ErgoHeapSizeLimit                         = 0               {product}
    uintx HeapSizePerGCThread                       = 87241520        {product}
    uintx InitialHeapSize                          := 67108864        {product}
    uintx LargePageHeapSizeThreshold                = 134217728       {product}
    uintx MaxHeapSize                              := 1044381696      {product}
     intx ThreadStackSize                           = 0               {pd produc
t}
     intx VMThreadStackSize                         = 0               {pd produc
t}
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

我尝试在很多地方设置-Xms-Xmx,但系统无法启动它。我该如何解决这个问题?

我改了

在“我的电脑”>“属性”>“Environment Variables”中添加了 JAVA_OPTS
在 Android SDK 的 dx.bat 中添加了 JAVA_OPTS
在应用程序文件夹内的build.bat 中添加了 JAVA_OPTS
更改了gradle.properties中的JAVA_OPTS

请帮忙

【问题讨论】:

  • 您使用的是 64 位 Windows 吗?如果是这种情况,您应该检查您是否有 64 位的 jdk。
  • 对于寻求解决这个问题的人来说,这对我有帮助 - stackoverflow.com/a/34636929/3748701

标签: android ionic hybrid-mobile-app


【解决方案1】:

Barlrog30 的解决方案对我不起作用,但给了我启发。

这对我有用:

将环境变量GRADLE_OPTS设置为-Dorg.gradle.jvmargs=-Xmx512m的值

我正在使用:

Windows 7 64bit + Jdk 32bit + cordova 5.3.1

【讨论】:

  • 您的意思是“Barlrog30 的解决方案不适合您”吗?
  • 澄清一下,在 Windows 命令提示符下:set GRADLE_OPTS=-Dorg.gradle.jvmargs=-Xmx512m
【解决方案2】:

发现此问题是特定于环境的。发布答案只是为了帮助那些可能遇到这个不幸问题的人。

通过在 64 位上安装 32 位 JDK 解决了问题 视窗 7。

安装前

  1. 转到应用程序管理器删除所有 JRE 和 JDK 安装
  2. 删除与旧 Java 安装相关的所有环境变量
  3. 从 Path 变量中更新/删除所有与 Java 相关的条目。 (不要删除路径变量)
  4. 重启系统
  5. 安装下载的JDK
  6. 转到环境变量并添加所需的键
  7. 更新 Path 变量以包含 JDK bin 文件夹

我不知道为什么会这样,但问题已经解决了。

【讨论】:

  • 我必须安装 64 位 JDK(之前安装的是 32 位)。但这个答案让我找到了正确的解决方案!
  • 那么,这里真正的问题是什么? gradle默认内存大于3GB?
【解决方案3】:

我遇到了同样的问题。我读了你的回答并想,“这似乎工作太多了。”所以,我一直在挖掘。

我找到了这个答案:https://stackoverflow.com/a/9813900/3771976

它说要设置一个环境变量: GRADLE_OPTS=-Xmx512m

我不得不将内存限制进一步增加到 1024,但它解决了问题。

Oracle Documentation for JVM Option

【讨论】:

  • 让我试试这个,你知道默认是什么吗?
  • 我为此选项添加了指向 Oracle JVM 文档的链接。似乎默认值取决于您的环境。进一步阅读还表明,GRADLE_OPTSJAVE_OPTS 完全相同,只是它特定于 Gradle 构建系统。
  • 我认为还值得注意的是,在我添加另一个 Cordova 插件之前我没有遇到任何问题,然后突然出现了这个问题。所以所需的内存似乎与您正在构建的内容有关。
【解决方案4】:

尝试卸载英特尔® 硬件加速执行管理器,然后重试。

【讨论】:

  • 你应该评论它,或者编辑和改进你的问题
【解决方案5】:

就我而言,我只需将 Java 运行时环境 (JRE) 和 Java 开发工具包 (JDK) 的所有环境变量都放入 64 位版本。

为此,我去了oracle's website,并简单地下载了 64 位 JRE 和 JDK。

在安装过程中,我检查了它在C:\Program Files\Java没有在 C:\Program Files (x86)\Java 中安装得很好,

然后我设置环境变量:

 - JAVA_HOME: C:\Program Files\Java\jdk1.8.0_121
 - Path: "C:\Program Files\Java\jre1.8.0_121\bin" and "C:\Program Files\Java\jdk1.8.0_121\bin"

希望对你有帮助!

【讨论】:

    【解决方案6】:

    将参数 -Xmx2048m 更改为 1024 或 512 在 line:args.push('-Dorg.gradle.jvmargs=-Xmx1024m');在你的项目文件中

    platforms\android\cordova\lib\builders\GradleBuilder.js

    这对我有用!!

    【讨论】:

      猜你喜欢
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 2021-10-30
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多