Тюнинг параметров JVM для нормальной работы IntelliJ IDEA

21 октября 2014

IntelliJ IDEA — замечательная IDE. Я использую ее для программирования на Scala и Erlang на протяжении, наверное, последних пяти месяцев и теперь просто не представляю, как без нее жить. Однако довольно скоро я обнаружил, что при программировании на Scala в какой-то момент IntelliJ IDEA начинает тупить и выйти из этого состояния ей помогает только перезапуск. В итоге мне ежедневно приходилось один-два раза перезапускать IDE. Не то, чтобы с этим нельзя было жить, но как-то печально, согласитесь. К счастью, решить эту проблему оказалось несложно.

В первую очередь я, конечно же, полез в настройки и отключил там все ненужные плагины. Таковых оказалось довольно много. Увы, решить проблему это не помогло. Небольшое гугление показало, что я не первый, кто сталкивается с подобной бедой. Оказалось, что параметры JVM, с которыми IntelliJ IDEA идет по умолчанию, предполагают запуск приложения на довольно слабых по нынешним меркам машинах. Я заменил эти параметры на следующие:

-server
-Xms128m
-Xmx2048m
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=96m
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-Dawt.useSystemAAFontSettings=lcd

В Linux, если uname -a говорит вам x86_64, приведенные параметры нужно прописать в файле /path/to/idea/bin/idea64.vmoptions. Если же архитектура вашего процессора — x86, тогда править нужно файл с именем idea.vmoptions. После перезапуска IntelliJ IDEA проблема ушла.

По всей видимости, она заключалась в том, что IDE не хватало памяти для того, чтобы удержать всю информацию, необходимую для всяких там автокомплитов и так далее. В итоге запускался сборщик мусора, который не особо справлялся со своей работой и приводил к тормозам. В приведенном конфиге, помимо прочего, был увеличен лимит на максимальный объем памяти, доступный JVM, что и позволило решить проблему.

Среди прочих причин, по которым могут проявиться аналогичные симптомы, знающие Scala-разработчики зачастую отмечают использование «тяжелых» библиотек типа scalaz и shapeless.

Дополнение: Спустя какое-то время мы в проекте полностью перешли на Scala 2.11 и JRE 8, а также разбили некоторые большие файлы, состоящие из тысяч строк кода, на файлы поменьше. Также я отключил Scala type-aware highlighting (зеленая буковка T в правом нижнем углу). После этого IDEA стала работать заметно шустрее. В результате параметр -Xmx был уменьшен до 1024m и пока что, вроде, этого за глаза хватает.

Дополнение: Впечатления от IntelliJ IDEA после года работы с ней, а также классика на тему Vim vs IDE

Метки: , , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.