Ошибка Gradle "Не удалось зарезервировать достаточно места для кучи объектов" постоянно в Intellij IDEA

Так что у меня проблема с выделением памяти. Иногда это работает, а иногда нет. Я прочитал эту ветку и попробовал совет там несколько раз. Иногда -Xms512m -Xmx768m работает, иногда -Xms256m -Xmx512m, Мне надоело настраивать этот параметр в IntelliJ под Build, Execution, Deployment > Build Tools > Gradle > Gradle VM настройка параметров. Разве нет настройки, которая решает это раз и навсегда?

У меня 16 ГБ ОЗУ на компьютере с Windows 7, я использую IntelliJ IDEA EAP 14 build 138.2210.3, 64-разрядная версия. Плагин сборки Android Gradle v0.12.

Я подозреваю, что gradle не работает в 64-битном режиме, иначе у него было бы ~7 ГБ свободной памяти для использования. Почему он не использует это?

РЕДАКТИРОВАТЬ:

Я получил ту же ошибку в Visual Studio 2015 с cordova 5.1.1 под Windows 10. Смотрите мое решение ниже.

7 ответов

Решение

Установка 64-битной Java решила это для меня

Я получил ту же ошибку в Visual Studio 2015 с cordova 5.1.1 под Windows 10.

Чтобы решить проблему, установите эту переменную среды:

_JAVA_OPTIONS=-Xmx512M
  1. Щелкните правой кнопкой мыши на кнопке "Пуск" и откройте "Система"
  2. Найдите "Расширенные настройки системы" и откройте его.
  3. Нажмите кнопку "Переменные среды..."
  4. В системных переменных нажмите "Новый..."
  5. Имя новой переменной: _JAVA_OPTIONS
  6. Новое значение переменной: -Xmx512M
  7. Нажмите ОК
  8. Перезапустите Visual Studio, чтобы переменная была подобрана

Эта статья указывает мне правильное направление. Я немного изменил инструкции, чтобы они соответствовали Windows 10.

Надеюсь, это поможет кому-то!

Хотя этот вопрос немного старше, я хотел бы найти (возможную) корневую причину проблемы: JVM запрашивает целый блок памяти при запуске. Если он не может найти его, возникает ошибка "Не удалось зарезервировать...". Джон Пейп (John Pape) написал интересную статью в блоге разработчиков IBM об этой проблеме: https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/why_wont_my_jvm_start_with_this_heap_size?lang=en

Это решает проблему для меня:

  • вариант а: использование 64-битной версии Java, чтобы дать Java большую область возможной подключенной свободной памяти
  • вариант b: с 32-битной Java, использующей меньшее количество XMX. В файле gradle.properties я просто использую org.gradle.jvmargs=-Xmx150m и у Gradle нет проблем.

Это происходит со мной тоже, и это сводит меня с ума. Возможно, что доступная память (ОЗУ) фрагментирована. Хотя у вас достаточно свободной памяти, нет доступных смежных блоков по 512 МБ, все они фрагментированы на более мелкие блоки! Вот почему вы видите это только "иногда".

Некоторые вещи стоит попробовать:

  • проверьте, не хватает ли памяти, попробуйте закрыть другие приложения. Это иногда случается со мной, даже если у меня все еще есть хорошие 3ГБ свободного из моих 8ГБ! Эти 3 ГБ могут быть фрагментированы в блоки размером менее 512 МБ [например, если у вас есть -Xmx512m]... Перезагрузка - это способ дефрагментировать вашу память. Или закройте Firefox, это освободит концерт;-)

  • также, что удивительно, проверьте пространство подкачки [свободное место на диске]! Зависит от реализации машины /JVM/ и т.д. Но если у вас мало места подкачки и ваша память фрагментирована, это может быть другой причиной.

  • уменьшите значение -Xmx до, возможно, -Xms128m -Xmx512m, чтобы упростить поиск непрерывного блока свободной памяти [128m]. Это может быть плохой идеей, если грейдеру действительно нужно минимум 512 метров. Учитывая, что мы говорим о gradle, игнорируйте этот пункт (это может быть полезным советом для других случаев / стоит отметить).

  • дважды проверьте свой Xms/Xmx в атрибуте ~/.gradle/gradle.properties: org.gradle.jvmargs

  • используйте idea64.exe [64 бита], и если вы считаете, что IDEA использует неправильный JDK [32 бита], в последней версии Intellij IDEA [14.1.3 на момент написания этой статьи] перейдите в "Настройки"->"Построение, выполнение, развертывание" -> "Gradle": "использовать оболочку по умолчанию" и выберите желаемую JVM Gradle (если вы считаете, что она использует неправильную, вы увидите ее здесь ".

  • наконец, это всего лишь предположение, но: в предыдущем пункте мне интересно, если вы выберете "использовать проект JDK", если это облегчит поиск смежной памяти. Я не уверен, означает ли это, что Gradle будет использовать уже зарезервированный блок памяти intellij IDEA. Таким образом, вместо двух процессов у вас есть только один, и вы можете зарезервировать больший блок памяти при запуске IDEA. Но я не уверен, что это точно, если это вариант, чтобы предложить Intellij...

Я согласен с вами, у меня никогда не было проблем с памятью в IDEA (ну, вообще никаких проблем), пока не появилась интеграция gradle.

В вашей папке Android есть файл gradel.properties и добавьте следующие строки:

org.gradle.jvmargs=-XX\:MaxHeapSize\=256m -Xmx256m

Я столкнулся с этим, используя Intellij и Flutter. Еще одно свойство, которое вы можете найти полезным - это объявление о том, где находится JDK.

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

Следуй этим шагам:

1° Установить Java SDK - 64 или 32 бита

https://www.oracle.com/br/java/technologies/javase/javase-jdk8-downloads.html

2° настроить переменную окружения

Windows 10 -

2.1° - панель управления -> система и безопасность -> расширенные настройки системы -> переменная окружения

2.2° - в переменных окружения нужно указать путь к установленному SDK:

Windows 32 бита нажмите добавить -> имя переменной: JAVA_HOME значение переменной: C: \ Program Files (x86) \ Java \ jdk1.8.0_291

Windows 64 бит нажмите добавить -> имя переменной: JAVA_HOME значение переменной: C:\Program Files\Java\jdk1.8.0_291

после выполнения этих шагов вы сможете нормально работать.

В моем случае у меня было слишком много открытых вещей. Освобождение памяти заставило это работать.

Другие вопросы по тегам