Ошибка 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 ответов
Я получил ту же ошибку в Visual Studio 2015 с cordova 5.1.1 под Windows 10.
Чтобы решить проблему, установите эту переменную среды:
_JAVA_OPTIONS=-Xmx512M
- Щелкните правой кнопкой мыши на кнопке "Пуск" и откройте "Система"
- Найдите "Расширенные настройки системы" и откройте его.
- Нажмите кнопку "Переменные среды..."
- В системных переменных нажмите "Новый..."
- Имя новой переменной: _JAVA_OPTIONS
- Новое значение переменной: -Xmx512M
- Нажмите ОК
- Перезапустите 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
после выполнения этих шагов вы сможете нормально работать.
В моем случае у меня было слишком много открытых вещей. Освобождение памяти заставило это работать.