vendredi 16 avril 2010

Tuning JVM et GC (Garbage collector) : Avantages du "generational collection"

Un des avantages du "generational collection" est qu'il peut rendre les pauses causés par les GC plus courtes en ne rassemblant pas toutes les générations à la fois.

Rappelons que lorsque la demande d'allocation de mémoire ne peut être satisfaite,

• le GC déclenche d'abord "une collecte mineure", qui rassemble seulement la plus jeune génération. Puisque plusieurs des objets dans la jeune génération seront déjà morts (le collecteur copiant n'a pas besoin d'examiner les objets morts), les pauses mineures de GC peuvent être courtes et peuvent souvent reprendre un espace significatif du Heap.

• Si la collecte mineure libère assez d'espace du heap, le programme peut reprendre immédiatement.

• Mais, si ce n'est pas le cas, le GC procède à la collecte des générations plus élevées jusqu'à ce qu'assez de mémoire ait été reprise (une Full collection).

• Si le GC, ne peut reprendre assez de mémoire après une "Full collection", il augmentera la taille du heap, ou il lèvera une Erreur OutOfMemoryError

Les paramètres les plus connues sont :

-XX:PermSize, -XX:MaxPermSize, -XX:NewSize, -XX:MaxNewSize, -Xms, -Xmx

   

-XX:PermSize

La taille de la génération permanente

-Xms

La taille initiale du Heap

-Xmx

La taille maximale du Heap

-XX:MinHeapFreeRatio

Pourcentage de l'espace libre minimum au sein d'une collection. Le GC accroît ou réduit la taille des collections pour tenter de préserver cette proportion.

Par défaut elle est souvent de 40% (dépend de la plate-forme).

-XX:MaxHeapFreeRatio

Pourcentage de l'espace libre maximum au sein d'une collection. Le GC accroît ou réduit la taille des collections pour tenter de préserver cette proportion.

Par défaut elle est souvent de 70% (dépend de la plate-forme).

-XX:NewRatio

Un ratio est utilisé qui indique le rapport entre la taille de la tenured gen et la young gen.

Ce ratio est ensuite appliqué sur la valeur de l'option Xmx qui fixe la taille totale du heap.

-XX:NewRatio=n ou n est un nombre entier.

Si n vaut 3 alors la young gen est 3 fois plus petite que la tenured generation.

-XX:NewSize

Fixe la taille de la young gen

-XX:NewSize = 4m fixe la taille la young generation à 4 MO.

-XX:MaxNewSize

Fixe la taille maximale de la young gen

- XX:NewSize = 40m fixe la taille maximale la young generation à 40MO.

• Les commandes en –X ne sont pas documentées !!!

· java –X

clip_image002[4]

Dans la suite nous allons montrer l’importance des choix des valeurs de certains de ces paramètres

0 commentaires :

Enregistrer un commentaire

Architecte SOA & Professionnel Open Source Headline Animator

 
Khaled BEN DRISS
Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.