JVM Tuning – Optimiser les performances de la machine virtuelle
Eric Vialle | Vendredi 16 mai 2008 | 8:20
Afin de gagner en performance, il est possible de modifier certains parametres de la JVM. Cela réside principalement dans la gestion de sa mémoire. Nous allons voir ici quelques options afin d’améliorer la vitesse d’exécution ou la réactivité de vos applications.
Optimiser l’espace de la Heap Memory
Java stocke les différents objets dans une mémoire d’allocation dynamique dénommé Heap Memory. Il est possible de prérégler la taille de cette mémoire. Donner suffisasement de place à vos objets vous évitera des appels récurrents au Garbage Collector.
Lors du lancement de la machine virtuelle java: (Java Virtual Machine), vous pouvez utilisez ces options suivantes:
java -Xms256M MonApp
lancera MonApp au moins 256Mo d’espace pour la Heap Memory
java -Xmx512M MonApp
donnera pour instruction de ne pas dépasser 512Mo d’espace pour la Heap Memory
java -Xmn128M MonApp
donnera pour instruction de ne pas dépasser 128Mo d’espace pour l’espace Young Generation. L’espace Young Generation représente la partie de l’espace mémoire où Java stocke les objets les plus récents.
La mémoire Young Génération doit être inférieure à la mémoire minimale. Sur une JVM 32 bits, la mémoire maximale est limitée à 4Go, excepté sous Windows où elle se situe aux alentours d’1.4Go. Avec une JVM 64 bits, reportez vous aux données de Sun.
Il est tout à fait possible de conjuguer l’utilisation de ces différentes options lors du lancement de la JVM -Xmx -Xmn -Xms
Mode de la JVM
La machine virtuelle peut tourner en deux modes: soit client (par défaut) soit server.
java -client MonApp
ou
java MonApp
le mode client est à privilégier si vous souhaitez que votre application démarre rapidement. Utilisez uniquement pour des applications à courte durée de vie ou simple.
java -server MonApp
Le mode server offre des performances optimales. Mais son démarrage est plus lent que le mode client. A privilegier pour des applications lourdes et/ou de moyennes/longues durées.
Monitoring
Afin de s’assurer que les nouveaux paramètres n’entrainent pas de régression dans ses performances. Il est conseillé de monitorer les performances de celle-ci et de comparer les différents réglages.
Afin de tracer le Garbage Collector, vous pouvez utiliser l’option suivante lors du lancement de la JVM
java -verbose:gc MonApp
Cette instruction affichera les faits et gestes du Garbage Collector.
[GC 50650K->21808K(76868K), 0.0478645 secs] >
[GC 51197K->22305K(76868K), 0.0478645 secs]
[GC 52293K->23867K(76868K), 0.0478645 secs]
[Full GC 52970K->1690K(76868K), 0.54789968 secs]
Sun propose des outils plus puis puissants telle la technologie Vmstat et son outil jconsole.
A lire:
- http://java.sun.com/performance/reference/whitepapers/tuning.html
- http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp
- http://www.javaperformancetuning.com/tips/index.shtml
- Tuning Garbage Collection
- Garbage Collector – Développez.com






