Magazine High tech

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

Publié le 16 avril 2010 par Hakym

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


Retour à La Une de Logo Paperblog

A propos de l’auteur


Hakym 199 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossiers Paperblog