web-dev-qa-db-fra.com

Speedup IntelliJ-Idea

J'utilise intelliJ pour le développement de Scala et j'ai eu 8 Go de nouveau RAM la semaine dernière, alors j'ai pensé: il était temps de l'utiliser. J'ai vérifié mon gestionnaire de tâches et trouvé intelliJ en utilisant ~ 250 Mo. D'après Eclipse, je savais que la modification des options de la machine virtuelle Java contribuait beaucoup à l'amélioration de la vitesse, alors j'ai cherché sur Google ...

et trouvé celui-ci pour OS X Je n’ai pas trouvé l’option JVM tout de suite, j’ai donc commencé à peaufiner Xmx. À 1 Go, j’ai réalisé qu’elle ne commençait plus. J'ai vérifié la version intelliJ Java, j'ai trouvé qu'elle était obsolète et 32 ​​bits. 

Donc, pour utiliser votre JDK actuel et le 64 bit, vous devez changer votre lien en:

IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe

à

IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT

et ajustez "Démarrer dans"

La chauve-souris cherche JDK_HOME et utilise maintenant 64 bits.

Mes VM options actuelles, situées dans

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

sont

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

Au lieu de -XX:+UseParallelGC, vous pouvez utiliser -XX:+UseConcMarkSweepGC, qui est 

le choix accepté pour les applications de bureau, mais j'ai changé au débit collectionneur récemment. parce qu'avec un machine rapide et un assez petit tas, vous avez des pauses rapides, plus de débit et pas de problèmes avec la fragmentation (ijuma. #scala)

Changements:

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

Je vais m'en tenir à ces options pour le moment. J'aimerais vraiment connaître votre expérience avec cela. 

Quelles sont les options qui vous conviennent le mieux? Comment masquer cette fenêtre de commande lorsque j'utilise intelliJ via le .bat? :)

À propos, voici un autre lien pour tuning intelliJ . En gros, il est dit sur p.20/21 de désactiver la restauration de Windows et l’antivirus pour les répertoires système.

Un autre moyen d'accélérer intelliJ consiste à mettre le dossier système intellij sur ramdrive (merci OlegYch | h).

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

Voir Superutilisateur pour Win 7 lecteur RAM 64 bits ou celui-ci . 1 Go me semble convenir.

Un autre indice qu'un ami m'a donné est de exclure les répertoires du projet de votre antivirus (analyse de l'accès)

Il y a des billets similaires concernant le réglage d'Eclipse:

90
Stefan K.

Cette combinaison fonctionne très bien sur mon Intellij13 fonctionnant sous Mavericks:

Mis à jour le 18 juil. 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

Je garde ce paramètre à jour sur https://github.com/adben/config/blob/master/idea64.vmoptions

30
adben

Pour moi, passer à SSD-Drive a beaucoup amélioré les performances (surtout pour les grands projets).

28
Yann Cébron

En ce qui concerne:

Comment masquer cette fenêtre cmd en exécutant intelliJ via le fichier .bat?

Utilisez la commande 'start' et javaw.exe ensemble, donc si vous avez:

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

changez le en:

SET Java_EXE=%IDEA_JDK%\jre\bin\javaw.exe
...
start "Intellij IDEA" /b "%Java_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*
20
Dilum Ranatunga

La chose la plus utile que vous puissiez faire pour IntelliJ est d’avoir beaucoup de mémoire libre pour la mise en cache du disque. IntelliJ enregistre beaucoup de son traitement dans des fichiers en cache. Cela fonctionne bien si vous avez beaucoup de mémoire libre, mais si votre cache disque est limité, vous verrez des pauses régulières et durables.

Je suggérerais -XX:+UseConcMarkSweepGC plutôt que G1.

Je travaille également sur des copies locales de fichiers pour réduire les délais d’accès aux fichiers.

BTW: Pour le projet sur lequel je travaille, j'ai remarqué la différence entre travailler sur une machine de 24 Go et une autre de 48 Go, même si le segment de mémoire maximal est défini sur 2 Go;) 

19
Peter Lawrey

Il y a quelque temps, je cherchais les moyens d'accélérer la compilation de mon projet et c'est le résultat. Ce n’est pas pour IntelliJ IDEA lui-même, mais cela aidera beaucoup lors de la (re) construction de grands projets et, je suppose, cela fonctionnera également avec d’autres IDE. En outre, j’ai décrit l’approche Linux, mais je suis sûr que Windows dispose de ses propres implémentations de disques RAM.

Le moyen le plus simple d'accélérer la compilation consiste à déplacer la sortie de la compilation sur le disque RAM.

Configuration du disque RAM

Fstab ouvert

$ Sudo gedit /etc/fstab

(au lieu de gedit, vous pouvez utiliser vi ou celui que vous préférez)

Configurer le point de montage du disque RAM

J'utilise des disques RAM à plusieurs endroits de mon système, dont l'un est /tmp; je vais donc simplement mettre ma sortie de compilation ici:

tmpfs /var/tmp tmpfs defaults 0 0

Dans ce cas, la taille de votre système de fichiers ne sera pas limitée, mais c'est correct, ma taille /tmp est actuellement de 73 Mo. Mais si vous craignez que la taille du disque RAM ne devienne trop grande, vous pouvez limiter sa taille, par exemple:

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

Configuration du projet

Dans IntelliJ IDEA, ouvrez Structure de projet (Ctrl+Alt+Shift+S par défaut), puis sélectionnez Projet - 'Sortie du compilateur de projet' et déplacez-le vers le point de montage du disque RAM:

/tmp/projectName/out

(J'ai ajouté le dossier projectName afin de le trouver facilement si je dois y aller ou si je travaillerai avec plusieurs projets en même temps)

Ensuite, allez dans Modules, et dans tous vos modules, allez dans Chemins et sélectionnez "Hériter le chemin de sortie de la compilation du projet" ou, si vous voulez utiliser le chemin de sortie de compilation personnalisé, modifiez "Chemin de sortie" et "Chemin de sortie de test" il projeter la sortie du compilateur avant.

C'est tout, les gars!

P.S. Quelques chiffres: heure de la compilation de mon projet actuel dans différents cas (environ):

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

P.P.S. Si vous utilisez un disque SSD, outre la rapidité de la compilation, vous réduirez les opérations d’écriture sur votre disque, ce qui permettra également à votre SSD de vivre heureux pour toujours;)

18
uncle Lem

J'ai expérimenté et constaté que, pour réduire les pauses GC, la combinaison suivante fonctionnait le mieux: -XX: + UseConcMarkSweepGC -XX: SoftRefLRUPolicyMSPerMB = 50.

Je ne ferais pas non plus le tas trop gros, 512 ou même moins, ça me va. Sinon, quand il sera plein, le GC devra marcher tout ce qui prend du temps.

4
Peter Gromov

Vous pouvez trouver de bons conseils ici. Par exemple, la vitesse de basculement de IDEA vers une autre application et inversement a été considérablement améliorée après la désactivation de la fonctionnalité "Désactiver la synchronisation des fichiers".

http://hamletdarcy.blogspot.com/2008/02/10-tips-to-increase-intellij-idea.html

2
OJ278

Vous ne pouvez pas savoir pourquoi cela n’a pas encore été mentionné - vous pouvez activer Power Save mode, ce qui désactive de nombreuses activitésIJ, y compris Files Synchronization. Certains articles disent qu'il est possible de désactiver la synchronisation des fichiers dans les options de structure de projet (comme l'article de la réponse de @ OJ278), mais je n'ai pas pu trouver cette option dans IJ 14 , mais Power Save mode semble la désactiver.

J'ai une base de code assez importante (AOSPcode source), donc l'activité HD due à la synchronisation des fichiers en arrière-plan est gênante ...

2
Mixaz

Vous pouvez utiliser le plugin optimiseur de l'intelliJ:

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

Avec le plugin, vous pouvez:

  • Réglage automatique des options de la machine virtuelle
  • Désactiver la vérification de classe
  • Nettoyer les caches du système
  • Configurer des outils de construction externes
  • Valider le dernier JDK Oracle
  • Ignorer la construction et redéployer
1
iberck

La réponse fournie par adben est très utile pour améliorer les performances de ma machine. Bien que je l’aie légèrement modifié après avoir lu un article sur 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

Ils ont amélioré les performances de grands projets en utilisant la configuration ci-dessus et fonctionnent parfaitement pour nos projets. Enfin, j'ai désactivé tous les plugins que je n'utiliserai pas et cela améliore également les choses. 

Référence: https://dzone.com/articles/the-one-and-only-reason-to-customize-intellij-idea

0
Arefe

J'ai utilisé cette combinaison et cela fonctionne bien dans mon environnement 

-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
0
0
SergioLeone