316 votes

Quels sont les meilleurs paramètres JVM pour Eclipse?

Quels sont les meilleurs paramètres JVM que vous avez trouvés pour exécuter Eclipse ?

76voto

VonC Points 414372

Paramètres Eclipse Galileo 3.5 et 3.5.1

Actuellement (novembre 2009), je teste avec jdk6 mise à jour 17 le jeu de paramètres de configuration suivant (avec Galiléo -- eclipse 3.5.x, voir ci-dessous pour 3.4 ou ci-dessus pour Helios 3.6.x):
(bien entendu, adaptez les chemins relatifs présents dans ce eclipse.ini pour les bons chemins de votre configuration)

Note : pour eclipse3.5, remplacez les lignes startup et launcher.library par :

-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519

eclipse.ini 3.5.1

-data
../../workspace
-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
384m
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-vm
../../../../program files/Java/jdk1.6.0_17/jre/bin/client/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-Dcom.sun.management.jmxremote
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/jv/eclipse/mydropins

Voir aussi ma réponse originale ci-dessus pour plus d'informations.

Modifications (de juillet 2009)

  • fait référence au lanceur et non au framework
  • plugins partagés : option org.eclipse.equinox.p2.reconciler.dropins.directory.
  • Galiléo prend en charge les chemins complètement relatifs pour le workspace ou la VM (évitez d'avoir à modifier ceux-ci d'une installation d'éclipse à une autre, si, bien sûr, votre JVM et votre workspace restent les mêmes)
    Avant, ces chemins relatifs étaient constamment réécrits en chemins absolus lorsque eclipse se lançait...
  • Vous pouvez également copier le répertoire JRE d'une installation de Java JDK à l'intérieur de votre répertoire eclipse

Attention

Il y avait un bug avec des points d'arrêt ignorés en réalité liés au JDK.
Utilisez JDK6u16 ou une version plus récente pour lancer eclipse (Vous pouvez alors définir autant de JDK que vous le souhaitez pour compiler à l'intérieur de eclipse : ce n'est pas parce que vous lancez un eclipse avec JDK6 que vous devrez compiler avec ce même JDK).

Maximum

Remarquez l'utilisation de :

--launcher.XXMaxPermSize
384m
-vmargs
-XX:MaxPermSize=128m

Comme documenté dans le Wiki d'Eclipse,

Eclipse 3.3 prend en charge un nouvel argument pour le lanceur : --launcher.XXMaxPermSize.
Si la VM utilisée est une VM Sun et qu'il n'y a pas déjà un argument VM -XX:MaxPermSize=, alors le lanceur ajoutera automatiquement -XX:MaxPermSize=256m à la liste des arguments VM utilisés.
Le lanceur 3.3 est uniquement capable d'identifier les VM Sun sous Windows.

Comme détaillé dans cette entrée:

Toutes les vms n'acceptent pas l'argument -XX:MaxPermSize, c'est pourquoi il est passé de cette manière. Il peut (ou non) exister des problèmes pour identifier les vms Sun.
Remarque : Eclipse 3.3.1 a un bug où le lanceur ne peut pas détecter une VM Sun, et n'utilise donc pas la bonne taille de PermGen. Il semble que cela ait été un bug connu sur Mac OS X pour 3.3.0 également.
Si vous utilisez l'une de ces combinaisons de plateformes, ajoutez le drapeau -XX au fichier eclipse.ini comme décrit ci-dessus.

Notes :

  • la ligne "384m" se traduit par la partie "=384m" de l'argument VM, si la VM est sensible à la casse sur le "m", alors cet argument l'est aussi.
  • le préfixe "--launcher.", cela spécifie que l'argument est consommé par le lanceur lui-même et a été ajouté aux arguments spécifiques au lanceur pour éviter les collisions de noms avec les arguments d'application. (D'autres exemples sont --launcher.library, --launcher.suppressErrors)

La partie -vmargs -XX:MaxPermSize=384m est l'argument passé directement à la VM, contournant complètement le lanceur et aucune vérification sur le fournisseur de VM n'est utilisée.

63voto

VonC Points 414372

Paramètres Eclipse Ganymede 3.4.2


Pour des paramètres plus récents, voir Paramètres Eclipse Galileo 3.5 ci-dessus.


JDK

Le meilleur paramètre de la JVM toujours, à mon avis, inclut le dernier JDK que vous pouvez trouver (donc pour le moment, jdk1.6.0_b07 jusqu'à b16, sauf b14 et b15)

eclipse.ini

Même avec ces paramètres de mémoire assez bas, je peux exécuter de grands projets java (avec un serveur web) sur mon vieux bureau (2002) avec 2Go de RAM.

-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-framework
plugins\org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
-vm
jdk1.6.0_10\jre\bin\client\jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss2m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:CompileThreshold=5
-Dcom.sun.management.jmxremote

Voir réponse SO de GKell et entrée de blog de Piotr Gabryanczyk pour plus de détails sur les nouvelles options.

Surveillance

Vous pouvez également envisager de lancer :

C:\[chemin jdk1.6.0_0x]\bin\jconsole.exe

Comme mentionné dans une question précédente sur la consommation de mémoire.

20voto

Mikko Rantalainen Points 2322

Paramètres Eclipse Indigo 3.7.2 (linux 64 bits)

Paramètres pour la version Sun/Oracle java "1.6.0_31" et Eclipse 3.7 tournant sur x86-64 Linux:

-nosplash
-vmargs
-Xincgc
-Xss500k
-Dosgi.requiredJavaVersion=1.6
-Xms64m
-Xmx200m
-XX:NewSize=8m
-XX:PermSize=80m
-XX:MaxPermSize=150m
-XX:MaxPermHeapExpansion=10m
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+UseParNewGC
-XX:+CMSConcurrentMTEnabled
-XX:ConcGCThreads=2
-XX:ParallelGCThreads=2
-XX:+CMSIncrementalPacing
-XX:CMSIncrementalDutyCycleMin=0
-XX:CMSIncrementalDutyCycle=5
-XX:GCTimeRatio=49
-XX:MaxGCPauseMillis=20
-XX:GCPauseIntervalMillis=1000
-XX:+UseCMSCompactAtFullCollection
-XX:+CMSClassUnloadingEnabled
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+AggressiveOpts
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses

À noter que ceci utilise seulement 200 Mo pour le tas et 150 Mo pour le non-tas. Si vous utilisez des plugins volumineux, vous voudrez peut-être augmenter les limites de "-Xmx200m" et "-XX:MaxPermSize=150m".

L'objectif d'optimisation principal pour ces indicateurs a été de minimiser la latence dans tous les cas et comme objectif d'optimisation secondaire minimiser l'utilisation de la mémoire.

14voto

Stephen Denne Points 17031

- montrer l'emplacement

Pour faciliter l'exécution de Eclipse deux fois et savoir avec quel espace de travail vous travaillez

Eclipse 3.6 ajoute une option de préférences pour spécifier ce qu'il faut afficher pour le Nom de l'espace de travail (affiché dans le titre de la fenêtre) ce qui fonctionne beaucoup mieux que -showlocation pour trois raisons :

  1. Vous n'avez pas besoin de redémarrer Eclipse pour que cela prenne effet.
  2. Vous pouvez choisir un code court.
  3. Il apparaît en premier, avant la perspective et le nom de l'application.

9voto

golimpio Points 501

Si vous utilisez Linux + Sun JDK/JRE 32bits, changez le "-vm" à :

-vm 
[your_jdk_folder]/jre/lib/i386/client/libjvm.so

Si vous utilisez Linux + Sun JDK/JRE 64bits, changez le "-vm" à :

-vm
[your_jdk_folder]/jre/lib/amd64/server/libjvm.so

Cela fonctionne bien pour moi sur Ubuntu 8.10 et 9.04

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X