Computing">
[Go to site: main page, start]

0% ont trouvé ce document utile (0 vote)
3 vues1 page

Java Memory Management

Le document présente la gestion de la mémoire en Java, en détaillant les différentes architectures de la JVM, notamment le Heap et le Stack, ainsi que les flags JVM utiles pour configurer la mémoire. Il explique le cycle de vie des objets dans le Heap, les différences entre le Stack et le Heap, et les types de Garbage Collectors disponibles. Enfin, il mentionne les spécificités de la gestion de la mémoire depuis Java 8 et les versions ultérieures.

Transféré par

ayoubchaabi.fr
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues1 page

Java Memory Management

Le document présente la gestion de la mémoire en Java, en détaillant les différentes architectures de la JVM, notamment le Heap et le Stack, ainsi que les flags JVM utiles pour configurer la mémoire. Il explique le cycle de vie des objets dans le Heap, les différences entre le Stack et le Heap, et les types de Garbage Collectors disponibles. Enfin, il mentionne les spécificités de la gestion de la mémoire depuis Java 8 et les versions ultérieures.

Transféré par

ayoubchaabi.fr
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi