Fonctionnement MÉMOIRE de la JVM

25
FONCTIONNEMENT MÉMOIRE DE LA JVM Julien Herr IR3 – 22/02/2008 1

description

Fonctionnement MÉMOIRE de la JVM. Julien Herr IR3 – 22/02/2008. Objectifs de l’exposé. Faire comprendre le fonctionnement de la mémoire en Java Initier à l'optimisation mémoire. Sommaire. Garbage Collecting Généralités Buts et principe de fonctionnement général Fonctionnement JVM - PowerPoint PPT Presentation

Transcript of Fonctionnement MÉMOIRE de la JVM

Page 1: Fonctionnement MÉMOIRE de la JVM

FONCTIONNEMENT MÉMOIRE DE LA JVMJulien HerrIR3 – 22/02/2008

1

Page 2: Fonctionnement MÉMOIRE de la JVM

Objectifs de l’exposé

Faire comprendre le fonctionnement de la mémoire en Java

Initier à l'optimisation mémoire

2

Page 3: Fonctionnement MÉMOIRE de la JVM

Sommaire

Garbage Collecting Généralités Buts et principe de fonctionnement général

Fonctionnement JVM Différentes zones mémoires Différents algo de collection

Optimisation de la gestion mémoire Le principe Mauvaises pratiques Les outils

Bibliographie Questions ?

3

Page 4: Fonctionnement MÉMOIRE de la JVM

Garbage Collecting : Généralités

Différence du C Rappel sur malloc / free

2 fonctions principales pour la VM Exécuter le code Gérer la mémoire

Objet collecté Un objet qui n'est plus référencé

Vocabulaire : Ramasse miette, GC

4

Page 5: Fonctionnement MÉMOIRE de la JVM

Garbage Collecting : Buts et fonctionnement général 2 types d’objets

Objets jeunes Objets vieux

Plusieurs algorithmes de nettoyage Entres les 2 types d'objets Pour un même type d'objets

Coupe tous les threads pendant le GC Déclanchement du GC lors du

dépacement du seuil de mémoire utilisée

5

Page 6: Fonctionnement MÉMOIRE de la JVM

Fonctionnement JVM : Différentes zones mémoires

6

Page 7: Fonctionnement MÉMOIRE de la JVM

Fonctionnement JVM : Différents algorithmes : Serial Collector7

Eden SS1 SS2 Old

Eden SS1 SS2 Old

Eden SS1SS2 Old

Eden SS1SS2 Old

PremierGC

SecondGC

Eden SS1SS2 Old

New Object Region Old Object Region

X GC

Page 8: Fonctionnement MÉMOIRE de la JVM

Fonctionnement JVM : Différents algorithmes : Mark & Sweep Compact8

OldDébut FullGC

Fin FullGC

Old

Page 9: Fonctionnement MÉMOIRE de la JVM

Fonctionnement JVM : Différents algorithmes : Parallel Collector9

Page 10: Fonctionnement MÉMOIRE de la JVM

Fonctionnement JVM : Différents algorithmes : Concurent Mark & Sweep10

Page 11: Fonctionnement MÉMOIRE de la JVM

Optimisation : Le principe

Stratégie par défaut de la JVM Algorithme de Garbage Collector Taille des zones mémoires Runtime Compiler (JIT)

Dépendant de la machine et de l’OS Changeant suivant les versions

11

Page 12: Fonctionnement MÉMOIRE de la JVM

Optimisation : Le principe

Pourquoi optimiser ? Ne plus rencontrer l'erreur "Out of Memory

Error" Défaut du perm size pour le code statique (ex : JSP)

Throughput Goal % de temps passé à faire du GC

Pause Goal Durée du GC

Temps de GC proportionnel au nombre d'objet

12

Page 13: Fonctionnement MÉMOIRE de la JVM

Optimisation : Le principe

3 types d'optimisations possibles Taille des zones mémoires Gérer l'intervalle de mémoire libre Type d'algorithme

Evaluer ses besoins Faire des tests

Empiriques Pas de recette magique

13

Page 14: Fonctionnement MÉMOIRE de la JVM

Optimisation : Mauvaises pratiques System.gc() Doubler la quantité de mémoire

14

Page 15: Fonctionnement MÉMOIRE de la JVM

Outils : Sortie GC15

Commande JVM -verbosegc :[GC 1667K->1295K(1984K), 0.0101756 secs]

[GC 1807K->1434K(1984K), 0.0223998 secs]

[GC 1946K->1574K(2112K), 0.0116185 secs]

[Full GC 1574K->1574K(2112K), 0.0830561 secs]

[GC 3454K->2081K(4672K), 0.0495951 secs]

[GC 4001K->2599K(4672K), 0.0274256 secs]

[GC 4519K->3101K(5056K), 0.0308995 secs]

[Full GC 3101K->3101K(5056K), 0.1452472 secs]

[GC 7039K->4131K(9452K), 0.0777414 secs]

[GC 8227K->5174K(9452K), 0.0627538 secs]

[GC 9270K->6209K(10348K), 0.1125570 secs]

Page 16: Fonctionnement MÉMOIRE de la JVM

Outils : GC Portal

Vieux : 2004 JVM 1.4 Lourdeur d'installation (scripts perl +

sql) http://java.sun.com/developer/

technicalArticles/Programming/GCPortal/

16

Page 17: Fonctionnement MÉMOIRE de la JVM

Outils : GC Portal17

Page 18: Fonctionnement MÉMOIRE de la JVM

Outils : Visual GC

http://management.netbeans.org/visualgc/index.html

18

Page 19: Fonctionnement MÉMOIRE de la JVM

Outils : Visual GC19

Page 20: Fonctionnement MÉMOIRE de la JVM

Outils : JConsole

Disponible dans le jdk Répertoire bin Depuis JDK1.5

http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html

20

Page 21: Fonctionnement MÉMOIRE de la JVM

Outils : JConsole21

Page 22: Fonctionnement MÉMOIRE de la JVM

Optimisation : Le principe

Laisser faire la machine Attendre la stabilité Ajouter 15 % environ Tester

22

Page 23: Fonctionnement MÉMOIRE de la JVM

Optimisation : Difficulté

Il faut de l'expérience Changements

D'une version à l'autre D'un constructeur à l'autre

23

Page 24: Fonctionnement MÉMOIRE de la JVM

Bibliographie

http://www.javaperformancetuning.com/ http://java.sun.com/docs/performance/ http://java.sun.com/performance/

reference/whitepapers/tuning.html http://java.sun.com/performance/

reference/whitepapers/6_performance.html

24

Page 25: Fonctionnement MÉMOIRE de la JVM

Questions ?25