Ускорение IntelliJ-Idea
Я использую intelliJ для разработки Scala и на прошлой неделе получил 8 ГБ новой оперативной памяти, поэтому я подумал: пора использовать ее. Я проверил свой диспетчер задач и нашел intelliJ, используя ~ 250 МБ. Из затмения я знал, что настройка параметров JVM очень помогла улучшить скорость, поэтому я погуглил...
и нашел этот для OS X, я не смог сразу найти опцию JVM, поэтому я начал настраивать Xmx. На 1 ГБ я понял, что больше не запускается. Я проверил версию IntelliJ Java, нашел ее устаревшей и 32-битной.
Таким образом, чтобы использовать ваш текущий JDK и 64-битный, вы должны изменить ссылку на с:
IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe
в
IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT
и настроить "Старт в"
Летучая мышь ищет JDK_HOME
и использует 64-битную JDK_HOME
.
Мои текущие параметры виртуальной машины, которые находятся в
...\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 64-битный RAM Drive или этот. 1 ГБ, кажется, хорошо для меня.
Еще один совет, который дал мне друг, - исключить каталоги проекта из вашего антивируса (проверка при доступе)
Есть похожие посты относительно тюнинга Eclipse:
Ответы
Ответ 1
Эта комбинация прекрасно работает на моем 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
Ответ 2
Для меня переключение на SSD-накопитель значительно улучшило производительность (особенно для крупных проектов).
Ответ 3
Относительно:
Как скрыть это окно 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% %*
Ответ 4
Самое полезное, что вы можете сделать для IntelliJ, - это иметь много свободной памяти для кэширования дисков. IntelliJ сохраняет много обработки в кэшированных файлах. Это хорошо работает, если у вас много свободной памяти, но если ваш кеш диска ограничен, вы увидите регулярные длительные паузы.
Я бы предложил -XX:+UseConcMarkSweepGC
, а не G1
.
Я также работаю с локальными копиями файлов, чтобы свести к минимуму задержку доступа к файлу.
BTW: для проекта, в котором я включен, я заметил разницу между работой на машине с 24 ГБ и одной с 48 ГБ, хотя максимальная куча установлена на 2 ГБ;)
Ответ 5
Некоторое время назад я искал способы ускорить компиляцию проекта, и это результат. Это не для самой 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 - "Выход компилятора проекта" и переместите его в точку монтирования RAM:
/tmp/projectName/out
(я добавил папку projectName
, чтобы легко найти ее, если мне нужно туда добраться или будет работать с несколькими проектами одновременно)
Затем перейдите в Модули, и во всех ваших модулях перейдите в "Контуры" и выберите "Наследовать путь к компиляции проекта" или, если вы хотите использовать собственный путь для компиляции, измените "Выходной путь" и "Проверить выходный путь" как вы это делали, чтобы проектировать вывод компилятора раньше.
Что все, люди!
P.S. Несколько номеров: время моей текущей компиляции проекта в разных случаях (приблизительно):
HDD: 80s
SSD: 30s
SSD+RAM: 20s
P.P.S. Если вы используете SSD-диск, помимо ускорения компиляции, вы уменьшите операции записи на своем диске, так что это также поможет вашему SSD жить долго и счастливо;)
Ответ 6
Я немного экспериментировал и обнаружил, что для уменьшения пауз GC лучше всего работает следующая комбинация: -XX: + UseConcMarkSweepGC -XX: SoftRefLRUPolicyMSPerMB = 50.
Я бы тоже не сделал слишком большую кучу, 512 или даже меньше для меня. В противном случае, когда он станет заполнен, GC должен будет пройти все это, что занимает некоторое время.
Ответ 7
Здесь вы можете найти полезные советы. Например, скорость переключения с IDEA на другое приложение и наоборот значительно улучшилась после отключения функции "Отключить синхронизацию файлов".
http://hamletdarcy.blogspot.com/2008/02/10-tips-to-increase-intellij-idea.html
Ответ 8
Не уверен, почему он еще не упоминался - вы можете включить Power Save mode
, который отключает фоновые действия IJ, включая Files Synchronization
. В некоторых статьях говорится, что можно отключить File Sync в параметрах структуры проекта (например, в статье в ответ на @OJ278), но я не смог найти этот параметр в IJ 14, но Power Save mode
кажется, отключает его.
У меня довольно большая база кода (AOSP), поэтому активность HD из-за синхронизации фоновых файлов раздражает...
Ответ 9
Вы можете использовать плагин оптимизатора intellij:
https://zeroturnaround.com/free/optimizer-for-intellij-idea/
С помощью плагина вы можете:
- Параметры автоматической настройки параметров виртуальной машины
- Отключить проверку класса
- Очистка системных кэшей
- Настройка внешних инструментов сборки
- Подтвердить последние версии Oracle JDK
- Пропустить сборку и повторное развертывание
Ответ 10
Ответ, предоставленный 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
Ответ 11
Я использовал эту комбинацию, и она отлично работает в моей среде
-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
Ответ 12
Сделал небольшую статью по этой теме на носителе: https://medium.com/@sergio.igwt/boosting-performance-of-intellij-idea-and-the-rest-of-jetbrains-ides-cd34952bb978