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
Dans la suite nous allons montrer l’importance des choix des valeurs de certains de ces paramètres