Прискорення IntelliJ-Idea


92

Я використовую 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

та налаштуйте "Start in"

Кажан шукає 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

Дивіться Суперкористувач для 64-бітного накопичувача оперативної пам'яті Win 7 або цього . 1 Гб мені здається чудовим.

Ще одна підказка, яку мені дав друг, - це виключити каталоги проекту з вашого антивіруса (сканування на доступ)

Є подібні публікації щодо налаштування Eclipse:


6
Якщо 64-розрядна версія запущена, параметри ВМ будуть прочитані зidea64.exe.vmoptions
Arnaud P

Я додав подібне запитання, але для 32-розрядної ОС (Windows 7) та 3 ГБ оперативної пам'яті: IntelliJ IDEA 13.1 - як запобігти проблемам з недостатньою пам’яттю в 32-розрядної ОС (Win 7) з 3 ГБ оперативної пам'яті
krm

Чому б не запустити "idea64.exe" безпосередньо, а не через файл .bat? (принаймні є idea64.exe в IntelliJ idea 11?
jbarrameda

Відповіді:


32

Ця комбінація чудово працює на моєму 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

3
будьте обережні з цим -XX:+UseCompressedStrings, з усіх у вашому списку, це зламало мене, решта працювало.
бламб 03.03.15

2
Дякую @adben, це значно покращило IJ на моєму ПК. Але я повинен був видалити MaxMetaspaceSize, MetaspaceSize, UseCompressedStringsтому що вони не підтримуються в IJ 14 на Linux x86_64. UseCompressedOopsddin також не працює для мене. Підказка: запустіть IJ із командного рядка, щоб побачити повідомлення про помилки, на Linux цеidea.sh
Mixaz

1
-XX: + UseCompressedStrings зламав це для мене теж для Win8 x64 та IDEA 64-розрядної версії. Все інше здається нормальним.
minorgod

Щоб спочатку відредагувати цей файл, просто натисніть Ctrl + Shift + A для спливаючого вікна пошуку дії та введіть " Редагувати власні параметри віртуальної машини ". Він автоматично створить правильний файл для вашої машини, який ви зможете редагувати.
Кевін Купер

28

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


Я точно визначу продуктивність IJ за допомогою SSD та HDD!
Gaurav

22

Деякий час тому я шукав шляхи прискорення компіляції мого проекту, і це результат. Це не для самої IntelliJ IDEA, але дуже допоможе при (пере) побудові великих проектів, і, я думаю, це також буде працювати з будь-якими іншими IDE. Крім того, я описав підхід Linux, але впевнений, що у Windows є власні реалізації RAM-диска.

Найпростіший спосіб прискорити компіляцію - перенести вихід компіляції на диск ОЗУ.

Налаштування диска RAM

Відкрийте fstab

$ sudo gedit /etc/fstab

(замість geditви можете використовувати viабо що завгодно)

Налаштуйте точку підключення диска RAM

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

tmpfs /var/tmp tmpfs defaults 0 0

У цьому випадку розмір вашої файлової системи не буде обмежений, але це нормально, мій /tmpрозмір зараз становить 73 МБ. Але якщо ви боїтеся, що розмір диска оперативної пам'яті стане занадто великим - ви можете обмежити його розмір, наприклад:

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

Налаштування проекту

В IntelliJ IDEA відкрийте Структуру проекту ( Ctrl+Alt+Shift+Sза замовчуванням), потім перейдіть до Проект - «Висновок компілятора проекту» і перемістіть його в точку монтування диска ОЗУ:

/tmp/projectName/out

(Я додав projectNameпапку, щоб легко її знайти, якщо мені потрібно туди потрапити або буду працювати з кількома проектами одночасно)

Потім перейдіть до Модулі, і у всіх своїх модулях перейдіть до Шляхи та виберіть «Успадкувати вихідний шлях компіляції проекту» або, якщо ви хочете використовувати спеціальний вихідний шлях компіляції, змініть «Вихідний шлях» та «Тестовий вихідний шлях» так, як це зробили це до виводу компілятора проекту раніше.

Це все, шановні!

PS Кілька цифр: час складання мого поточного проекту в різних випадках (приблизно):

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

PPS Якщо ви використовуєте SSD-диск, крім прискорення компіляції, ви зменшите кількість операцій запису на ваш диск, тому це також допоможе вашому SSD жити щасливо до кінця;)


Ram рішення - це чудово !! не тільки за продуктивність, але й захищає час життя твердотільного диска. дякую!
Мойтаба Асг

Я перемістив свої cachesта indexпапки через символічне посилання на диск RAM, кеш Intellij IDEA на RAM Drive пропонує інший спосіб зробити це без символічних посилань, однак для цього потрібен більший диск RAM, оскільки ви не можете вказати лише кеші та індексні папки, які шлях. Само собою зрозуміло, що будь-який пошук / пошук / клацання символу є миттєвим або майже миттєвим зараз
ycomp

Як це зробити у Windows 10?
Gaurav,

@ycomp, будь ласка, детальніше про те, як це зробити?
SergioLeone

Я не пам’ятаю конкретно, але це, мабуть, більше клопоту, ніж варто. Хоча це було лихо швидко. Я не пам’ятаю, чи були якісь конкретні проблеми, пов’язані з цим. Я перестав це робити, коли перейшов на інший ПК
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
Для мене найважливішим усвідомленням є те, що коли він призупиняється, це відбувається не через GC, а навпаки, перечитувати дані з диска.
Пітер Лорі

3
Різниця між машиною на 48 Гб і машиною на 24 Гб, швидше за все, пов’язана з кешуванням файлової системи / ОС за допомогою додаткової оперативної пам'яті.
cdeszaq

4

Я зробив деякі експерименти, і виявив , що для зменшення GC паузи наступної комбінація працює краще за все: -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50.

Я б також не зробив купу занадто великою, 512 або навіть менше - це нормально для мене. В іншому випадку, коли він заповниться, GC доведеться пройти це все, що займає певний час.



2

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

У мене досить велика база коду ( вихідний код AOSP ), тому активність HD через синхронізацію фонових файлів дратує ...


1

Ви можете використовувати плагін для оптимізатора intellij:

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

За допомогою плагіна ви можете:

  • Автоматична настройка параметрів віртуальної машини
  • Вимкнути перевірку класу
  • Очищення кешів системи
  • Налаштування зовнішніх інструментів побудови
  • Перевірте останню версію Oracle JDK
  • Пропустити збірку та передислокацію

Чому голосувати проти? питання полягає в налаштуванні intellij, і це рішення
iberck

2
На жаль, плагін здається витягнутим.
nilo de roock

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. Недійсний варіант.
Санду Лівіу Каталін

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.