Gestion mémoire de la JVM
Fonctionnement de la mémoire JVM
Différentes zones mémoires
Comme je le disais précédemment, la mémoire de la JVM est divisée en plusieurs zones :
- La zone jeune (ou Young), qui contient les objets jeunes venant d'être créés ou les objets n'étant pas encore consédérés comme vieux ;
- La zone vieille (ou Tenured), qui contient les objets existants dans la JVM depuis un certain moment ;
- La zone permanente (ou Perm), qui contient toutes les données statiques (le code binaire de chaque classe chargée pour l'exécution du programme).
Comme nous pouvons le voir, la zone jeune est divisée en plusieurs zones :
- L'Eden, qui est l'espace mémoire où sont créés les objets;
- Deux Survivor Space, qui sont les espaces où sont stockés les objets avant de passer dans la zone vieille (pour plus d'informations, consulter la partie sur les algorithmes de GC).
Vous noterez que chacune des zones possède une partie Virtual. Cette zone est en fait une zone tampon.
En effet, la taille mémoire de la JVM est fixée au lancement de cette dernière et ne peux pas évoluer au cours du temps.
Il est cependant possible que les différentes zones évoluent au court du temps afin de réduire le temps de GC.