Ускорение IntelliJ-Idea

92

Я использую intelliJ для разработки на Scala и на прошлой неделе получил 8 ГБ новой оперативной памяти, поэтому подумал: пора ее использовать. Я проверил свой диспетчер задач и нашел intelliJ, использующий ~ 250 МБ . Из eclipse я знал, что настройка параметров JVM очень помогает повысить скорость, поэтому я погуглил ...

и нашел это для OS X. Я не смог сразу найти вариант JVM, поэтому начал настраивать Xmx. На 1 Гб понял, что больше не запускается. Я проверил версию intelliJ java, обнаружил, что она устарела и 32-битная.

Итак, чтобы использовать текущий JDK и 64-разрядную версию, вам нужно изменить свою ссылку на from:

IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe

к

IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT

и настройте "Начать через"

Летучая мышь JDK_HOMEтеперь ищет и использует 64-битную версию.

Мои текущие параметры виртуальной машины , которые находятся в

...\IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe.vmoptions

находятся

-Xms512m
-Xmx1024m
-XX:MaxPermSize=512m
-ea
-server
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+UnlockExperimentalVMOptions
-XX:+UseParallelGC

Вместо -XX:+UseParallelGC, вы можете использовать -XX:+UseConcMarkSweepGC, что

принятый выбор для настольных приложений, но недавно я перешел на сборщик пропускной способности. потому что с быстрой машиной и достаточно маленькой кучей у вас есть быстрые паузы, большая пропускная способность и нет проблем с фрагментацией (ijuma. #scala)

Изменения:

-XX:+UseConcMarkSweepGC //removed
// removed, because not needed with the lastest JVM.
    -XX:+UnlockExperimentalVMOptions
    -XX:+DoEscapeAnalysis
    -XX:+UseCompressedOops

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

Какие варианты подходят вам лучше всего? Как мне скрыть это окно cmd при запуске intelliJ через .bat? :)

Кстати, вот еще одна ссылка для настройки intelliJ . В основном на стр. 20/21 говорится об отключении восстановления Windows и антивируса для системных каталогов.

Другой способ ускорить работу intelliJ - поместить системную папку intellij на ramdrive (спасибо OlegYch | h).

from idea.properties 
idea.system.path=${idea.home}/.IntelliJIdea/system

См. Superuser для Win 7 64bit RAM Drive или этот . 1 ГБ мне кажется вполне подходящим.

Еще один совет, который мне дал друг, - исключить каталоги проектов из вашего антивируса (сканировать при доступе)

По поводу настройки Eclipse есть похожие сообщения:

Стефан К.
источник
6
Если запущена 64-битная версия, параметры виртуальной машины будут считываться изidea64.exe.vmoptions
Arnaud P
Я добавил аналогичный вопрос, но для 32-разрядной ОС (Windows 7) и 3 ГБ ОЗУ: IntelliJ IDEA 13.1 - как предотвратить проблемы с
нехваткой
Почему бы не запустить "idea64.exe" напрямую, а не через .bat-файл? (по крайней мере, в IntelliJ idea 11 есть idea64.exe?
jbarrameda

Ответы:

33

Эта комбинация отлично работает на моем Intellij13, работающем в Mavericks:

Обновлено 18 июля 2017 г . :

# custom IntelliJ IDEA VM options

-ea
-server
-Xms2G
-Xmx4096M
-Xss2m
-XX:MaxMetaspaceSize=2G
-XX:ReservedCodeCacheSize=1G
-XX:MetaspaceSize=512m
-XX:+UseConcMarkSweepGC
-XX:+DoEscapeAnalysis
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:+UnlockExperimentalVMOptions
-Djava.net.preferIPv4Stack=true
-Dsun.io.useCanonCaches=false
-XX:LargePageSizeInBytes=256m
-XX:+UseCodeCacheFlushing
-XX:ParallelGCThreads=8
-XX:+DisableExplicitGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+PrintGCDetails
-XX:+PrintFlagsFinal
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:CMSInitiatingOccupancyFraction=60
-XX:+CMSClassUnloadingEnabled
-XX:+CMSParallelRemarkEnabled
-XX:+UseAdaptiveGCBoundary
-XX:+UseSplitVerifier
-XX:CompileThreshold=10000
-XX:+OptimizeStringConcat
-XX:+UseStringCache
-XX:+UseFastAccessorMethods
-XX:+UnlockDiagnosticVMOptions
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseCompressedOops
-XX:-OmitStackTraceInFastThrow
-Dawt.useSystemAAFontSettings=lcd

-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine

Я обновляю этот параметр на https://github.com/adben/config/blob/master/idea64.vmoptions

адбен
источник
3
у вас там много дубликатов
vach 02
3
будьте осторожны с этим -XX:+UseCompressedStrings, из всего в вашем списке, это сломало меня, остальное сработало.
blamb 03
2
Спасибо @adben, это значительно улучшило IJ на моем ПК. Но я должен был удалить MaxMetaspaceSize, MetaspaceSize, UseCompressedStringsпотому что они не поддерживаются в IJ 14 на Linux x86_64. UseCompressedOopsУ меня тоже не работает. Подсказка: запустите IJ из командной строки, чтобы увидеть сообщения об ошибках, в Linux этоidea.sh
Mixaz
1
-XX: + UseCompressedStrings сломал его и для меня на Win8 x64 и 64-битной версии IDEA. Все остальное вроде нормально.
minorgod
Чтобы отредактировать этот файл в первую очередь, просто нажмите Ctrl + Shift + A для всплывающего окна Find Action и введите « Edit Custom VM Options ». Он автоматически создаст правильный файл для вашего компьютера, который вы сможете редактировать.
Кевин Купер
29

Для меня переход на SSD-накопитель сильно улучшил производительность (особенно для крупных проектов).

Ян Себрон
источник
Я определенно собираюсь измерить производительность IJ с SSD и HDD!
Gaurav
23

Некоторое время назад я искал способы ускорить компиляцию моего проекта и вот результат. Это не для самой IntelliJ IDEA, но очень поможет при (пере) создании больших проектов, и, я думаю, он будет работать и с любыми другими IDE. Также я описал подход Linux, но я уверен, что в Windows есть собственные реализации RAM-диска.

Самый простой способ ускорить компиляцию - переместить выходные данные компиляции на RAM-диск.

Настройка RAM-диска

Открыть fstab

$ sudo gedit /etc/fstab

(вместо этого geditможно использовать viили что угодно)

Настроить точку монтирования RAM-диска

Я использую RAM-диски в нескольких местах в моей системе, и одно из них используется /tmp, поэтому я просто помещаю туда свои результаты компиляции:

tmpfs /var/tmp tmpfs defaults 0 0

В этом случае размер вашей файловой системы не будет ограничен, но это нормально, мой /tmpразмер сейчас составляет 73 МБ. Но если вы боитесь, что размер RAM-диска станет слишком большим - вы можете ограничить его размер, например:

tmpfs /var/tmp tmpfs defaults,size=512M 0 0

Настройка проекта

В IntelliJ IDEA откройте структуру проекта ( Ctrl+Alt+Shift+Sпо умолчанию), затем перейдите в Project - 'Project compiler output' и переместите его в точку монтирования RAM-диска:

/tmp/projectName/out

(Я добавил projectNameпапку, чтобы ее было легко найти, если мне нужно туда попасть или я буду работать с несколькими проектами одновременно)

Затем перейдите в «Модули» и во всех своих модулях перейдите в «Пути» и выберите «Наследовать путь вывода компиляции проекта» или, если вы хотите использовать собственный путь вывода компиляции, измените «Путь вывода» и «Путь вывода теста», как вы это делали. это для проецирования вывода компилятора раньше.

Вот и все, ребята!

PS Несколько цифр: время компиляции моего текущего проекта в разных случаях (примерно):

HDD:     80s
SSD:     30s
SSD+RAM: 20s

PPS Если вы используете SSD-диск, то помимо ускорения компиляции вы сократите количество операций записи на ваш диск, что также поможет вашему SSD жить долго и счастливо;)

дядя Лем
источник
Решение Ram отличное !! не только для производительности, но и для защиты срока службы SSD. спасибо!
Mojtaba Asg
Я пошевелил cachesи indexпапку с помощью символической ссылки на RAM диск, кэш IDEA Intellij в RAM Drive предлагает другой способ сделать это без символических ссылок, однако это потребовало бы больший RAM диска , потому что вы не можете указать только кэша и индексные папки , которые путь. Излишне говорить, что теперь любой поиск / поиск / щелчок по символу происходит мгновенно или почти мгновенно
ycomp
Как это сделать на windows 10?
Гаурав
@ycomp, не могли бы вы рассказать, как это сделать?
СерджиоЛеоне
Я не могу вспомнить конкретно, но это, наверное, больше проблем, чем того стоит. Хотя это было очень быстро. Я не могу вспомнить, были ли какие-то конкретные проблемы, связанные с этим .. Я перестал это делать после миграции на другой компьютер
ycomp
20

Что касается:

Как скрыть это окно cmd при запуске intelliJ через .bat?

Используйте команду start и javaw.exe вместе, поэтому, если у вас есть:

SET JAVA_EXE=%IDEA_JDK%\jre\bin\java.exe
...
"%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*

измените его на:

SET JAVA_EXE=%IDEA_JDK%\jre\bin\javaw.exe
...
start "Intellij IDEA" /b "%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*
Дилум Ранатунга
источник
19

Самое полезное, что вы можете сделать для IntelliJ, - это иметь много свободной памяти для кэширования диска. . IntelliJ сохраняет большую часть своей обработки в кешированных файлах. Это хорошо работает, если у вас много свободной памяти, но если ваш дисковый кеш ограничен, вы будете видеть регулярные длительные паузы.

Я бы предложил, -XX:+UseConcMarkSweepGCа не G1.

Я также работаю с локальными копиями файлов, чтобы минимизировать задержку доступа к файлам.

Кстати : для проекта, над которым я работаю, я заметил разницу между работой на машине с 24 ГБ и на машине с 48 ГБ, даже если максимальная куча установлена ​​на 2 ГБ;)

Питер Лоури
источник
4
Для меня наиболее важным является осознание того, что когда он приостанавливается, это происходит не из-за сборки мусора, а из-за необходимости перечитывать данные с диска.
Питер Лоури
4
Разница между машиной на 48 ГБ и машиной на 24 ГБ, вероятно, связана с кэшированием на уровне файловой системы / ОС с использованием дополнительной оперативной памяти.
cdeszaq
4

Я поэкспериментировал и обнаружил, что для уменьшения пауз сборщика мусора лучше всего работает следующая комбинация: -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 .

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

Петр Громов
источник
2

Не уверен, почему это еще не было упомянуто - вы можете включить Power Save mode, что отключает многие фоновые действия IJ , в том числе Files Synchronization. В некоторых статьях говорится, что можно отключить синхронизацию файлов в параметрах структуры проекта (например, в статье в ответе @ OJ278), но мне не удалось найти эту опцию в IJ 14 , ноPower Save mode похоже, отключил ее.

У меня довольно большая кодовая база ( исходный код AOSP ), поэтому активность HD из-за синхронизации фоновых файлов раздражает ...

Mixaz
источник
1

Вы можете использовать плагин оптимизатора intellij:

https://zeroturnaround.com/free/optimizer-for-intellij-idea/

С помощью плагина вы можете:

  • Автоматическая настройка параметров виртуальной машины
  • Отключить проверку класса
  • Очистить системные кеши
  • Настроить внешние инструменты сборки
  • Проверить последнюю версию Oracle JDK
  • Пропустить сборку и повторное развертывание
Иберк
источник
Почему голосование против? вопрос о настройке intellij, и это решение
iberck 05
2
К сожалению, похоже, что плагин вытащили.
nilo de roock 02
1

Ответ, предоставленный, adbenочень полезен для повышения производительности моей машины. Хотя я немного переопределил его после прочтения статьи Dzone,

-server
-Xms2g
-Xmx2g
-XX:NewRatio=3
-Xss16m
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:ConcGCThreads=4
-XX:ReservedCodeCacheSize=240m
-XX:+AlwaysPreTouch
-XX:+TieredCompilation
-XX:+UseCompressedOops
-XX:SoftRefLRUPolicyMSPerMB=50
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
-ea

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

Ссылка: https://dzone.com/articles/the-one-and-only-reason-to-customize-intellij-idea

Тотализатор, где делаются ставки на смерть знаменитостей
источник
0

Я использовал эту комбинацию, и она отлично работает в моей среде

-server
-Xms2048m
-Xmx2048m
-XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:PermSize=512m
-XX:MaxPermSize=512m
-XX:+UseParNewGC
-XX:ParallelGCThreads=4
-XX:MaxTenuringThreshold=1
-XX:SurvivorRatio=8
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=65
-XX:+CMSScavengeBeforeRemark
-XX:+UseCMSInitiatingOccupancyOnly
-XX:ReservedCodeCacheSize=64m
-XX:-TraceClassUnloading
-ea
-Dsun.io.useCanonCaches=false
Ясир Шабир Чоудхари
источник
Не включайте в -XX:+UseParNewGCпоследние версии CLion. Неверный вариант.
Санду Ливиу Каталин,