Générations et cycles de GC : Young, Old, Minor, Major, Full

Minor GC, Major GC, Full GC : des mots qu’on lit partout, mais pas toujours avec le sens que leur donne la documentation officielle. La plupart des objets meurent jeunes. La JVM range donc les objets récents dans la Young, et ceux qui durent dans la Old. Un GC qui ne nettoie que la Young est rapide, et il passe souvent. Pourquoi des générations Le guide officiel d’Oracle sur le garbage collector part d’une observation : la plupart des objets ne vivent que très peu de temps. On l’appelle l’hypothèse générationnelle. Un objet créé pour une requête, une boucle ou un calcul devient inutile presque tout de suite. ...

22 octobre 2026 · 6 min

La mémoire de la JVM : Heap, Stack, Metaspace

Votre vieille configuration Java ne démarre plus en Java 17 ? La réponse est dans la mémoire de la JVM. En Java, chaque thread a sa stack, pour ses variables locales. Les objets vivent dans le heap, la zone que le garbage collector nettoie. Les classes sont décrites dans le Metaspace, hors du heap. Et la JVM utilise encore d’autres zones de mémoire, qu’on oublie souvent. Trois zones à connaître La mémoire d'un processus Java : les stacks des threads, le heap, le Metaspace et les autres zones natives Processus Java tout ce qui est hors du heap est de la mémoire native Stacks une par thread · -Xss Thread main traiter() · client main() Thread 2 lire() run() frames, variables locales Heap partagé · géré par le GC · -Xmx Client String List byte[] les objets créés avec new les chaînes internées les champs statiques des classes Metaspace mémoire native sans limite par défaut Client champs, méthodes… String champs, méthodes… la description des classes -XX:MaxMetaspaceSize Et aussi, en mémoire native Code cache le code compilé par le JIT 240 Mo au maximum par défaut Direct memory ByteBuffer.allocateDirect() -XX:MaxDirectMemorySize Structures internes du garbage collector, du compilateur… La stack : une par thread Chaque thread a sa propre stack. À chaque appel de méthode, la JVM y ajoute une frame : les paramètres et les variables locales de la méthode. Quand la méthode se termine, sa frame disparaît. Pas besoin du garbage collector pour libérer cette mémoire. ...

22 octobre 2026 · 5 min