JVM Tuning – Optimiser les performances de la machine virtuelle

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: