Ионная сборка Android - недостаточно памяти для запуска jvm

При попытке создать файл apk для Android с помощью ionic и gradle, я получаю сообщение об ошибке

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 во многих местах, но система просто не может ее запустить. Как решить эту проблему?

Я изменил

Добавлен JAVA_OPTS в Мой компьютеp > Свойствa > Environment Variables
Добавлен JAVA_OPTS в dx.bat в Android SDK
Добавлено JAVA_OPTS в build.bat внутри папки приложения
Изменен JAVA_OPTS в gradle.properties

Пожалуйста, помогите

Ответ 1

Эта проблема оказалась специфичной для среды. Проводя ответ только, чтобы помочь тем, у кого может быть эта неудачная проблема.

Проблема была решена путем установки 32-разрядного JDK на 64-битном Windows 7.

Перед установкой

  • Удалите все установки JRE и JDK, перейдя в диспетчер приложений
  • Удалите все переменные среды, относящиеся к вашей старой установке Java.
  • Обновить/удалить все связанные с Java записи из переменной Path. (Не удаляйте переменную пути)
  • Перезагрузите систему.
  • Установите загруженный JDK
  • Перейдите к переменным среды и добавьте необходимые ключи.
  • Обновите переменную Path, чтобы включить папку bin JDK

У меня нет подсказки, почему это произошло, но проблема была решена.

Ответ 2

Решение Barlrog30 не работало для меня, но вдохновило меня.

Вот что работает для меня:

Установите среду vairable GRADLE_OPTS в значение -Dorg.gradle.jvmargs=-Xmx512m

Я использую:

Windows 7 64bit + Jdk 32bit + cordova 5.3.1

Ответ 3

У меня была та же проблема. Я прочитал ваш ответ и подумал: "Это похоже на слишком много работы". Итак, я продолжал рыть.

Я нашел этот ответ: fooobar.com/questions/146906/...

В нем указано, чтобы задать переменную окружения: GRADLE_OPTS=-Xmx512m

Мне пришлось увеличить ограничение памяти до 1024, но оно решило проблему.

Документация Oracle для варианта JVM

Ответ 4

Попробуйте удалить Intel® Hardware Accelerated Execution Manager и повторите попытку.

Ответ 5

В моем случае мне просто пришлось поместить все переменные среды для Java Runtime Environment (JRE) и Java Development Kit (JDK) в 64-разрядную версию.

Чтобы сделать это, я отправился на сайт oracle и просто загрузил 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

Измените аргумент -Xmx20484m на 1024 или 512 в строке: args.push('- Dorg.gradle.jvmargs = -Xmx1024m'); в файле проекта

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

Это работает для меня.