Как заставить Intellij IDEA использовать только один демон gradle?
Я знаю, что это может выглядеть как дубликат Как отключить демон Gradle в IntelliJ Idea?, но я не хочу полностью отключать демон Gradle. Я просто хочу использовать только одного демона, а не многих.
Проблема, с которой я столкнулся, заключается в том, что для успешного запуска некоторых задач gradle мне нужно выделить около 2GB RAM. И моя система имела только 8 ГБ памяти.
Проблема в том, что когда я выполняю определенные действия (я думаю, что это "проекты обновления gradle", их 2), я иногда запускаю 2 или более демонов gradle. Каждый потребляет 2 ГБ памяти.
Можно ли использовать только одного демона или как-то автоматически остановить эти лишние демоны?
2 ответа
Вы можете остановить все запущенные демоны с помощью gradlew --stop
, Новые демоны создаются только при необходимости. Например, если используется другая версия Java или нужны другие аргументы демона и так далее. Возможно, вы могли бы взглянуть на Sysinternals ProcessExplorer и сравнить два процесса, чтобы найти различия между ними, чтобы найти причину, по которой два из них созданы.
Для людей, оказавшихся здесь с похожей, но немного другой проблемой — у вас могут быть другие проблемы.file.encoding
характеристики. Используя ProcessExplorer, проверьте аргументы командной строки, как предлагает этот ответ. Если у вас одни с Windows, а другие с Windows, то это ваша проблема. Вероятно, это произошло со мной потому, что я использую Git для Windows и IntelliJ. Я думаю, что в среде git по умолчанию этоUTF-8
вместо Windows.
Чтобы решить эту проблему, прочтите этот документ о том, как изменить память JVM. По сути, сделайтеgradle.properties
файл в вашем доме Gradle (~/.gradle/gradle.properties
по умолчанию) и добавьте это
org.gradle.jvmargs=-Dfile.encoding=UTF-8
Если у вас уже есть аргументы, просто добавьте их следующим образом:
org.gradle.jvmargs=-Xmx1024m -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8
Теперь у вас должен быть только один демон Gradle! (Конечно, если вы не попытаетесь запустить один, пока другой занят.)