Flags JVM utiles Gestion de la Memoire en Java // Exemple allocation memoire
-Xms256m : taille initiale Heap -Xmx4g : taille max Heap
Architecture int x = 42;
JVM • Heap • Stack // Stack
• Garbage Collector
-Xss512k : taille Stack/thread -verbose:gc : logs GC String s = new String("Hi"); // ref Stack → objet Heap
// s = null → eligible au GC
Architecture Memoire JVM Cycle de vie d'un objet dans le Heap
HEAP (objets dynamiques)
1. new MyObj()
1
Allocation dans Eden
Young Generation
2. Minor GC survit
Eden S0 S1 2
Copie dans Survivor S0 ou S1
Nouveaux Survivor Survivor Minor GC
objets
3. Age > seuil (15)
promotion 3
Promotion vers Old Generation
Old Generation (Tenured)
4. Major / Full GC
Objets ayant survecu plusieurs cycles GC 4
Collecte si plus aucune reference
Longue duree de vie — promotion depuis Young Gen
5. finalize() (deprecated)
Major GC 5
Memoire liberee et reclamee
Metaspace — Metadonnees des classes, methodes, constantes (hors Heap depuis Java 8)
Garbage
Serial GC Collectors (JavaParallel
11+) GC
-XX:+UseSerialGC -XX:+UseParallelGC
Stack (par thread)
Native Stack
1 thread • Petites applis Multi-thread • Throughput
Frames • Variables locales
Primitives • References PC Register
G1 GC ZGC
-XX:+UseG1GC -XX:+UseZGC
Defaut Java 9+ • Faible latence < 1ms pause • Java 15+ prod
Stack vs Heap — Differences cles
STACK HEAP
Contenu: Contenu:
Variables locales, references, valeurs primitives Objets, tableaux, instances de classes
Taille: Taille:
Limitee (~512KB-1MB par thread par defaut) Configurable: -Xms256m -Xmx4g (par ex.)
Acces: Acces:
LIFO — tres rapide (pointeur de pile) Via references — plus lent (GC overhead)
Duree vie: Duree vie:
Liee a la methode en cours d'execution Jusqu'a ce que le GC collecte l'objet
Gestion: Gestion:
Automatique — push/pop par la JVM VS Garbage Collector — automatique
Erreur: Erreur:
StackOverflowError si depassement OutOfMemoryError si plus d'espace
Thread: Thread:
Chaque thread a sa propre Stack Partagee entre tous les threads JVM
Partage: Partage:
Non partagee entre threads Partagee — acces concurrent possible
Java Memory Management — Reference Sheet
Heap (Young/Old/Metaspace) • Stack • GC (Serial / Parallel / G1 / ZGC) • JVM Flags
Java 17+ LTS — Pour usage pedagogique