Exposé sur le fonctionnement de mémoire de la JVM

publicité
1
FONCTIONNEMENT
MÉMOIRE DE LA JVM
Julien Herr
IR3 – 22/02/2008
Objectifs de l’exposé
2


Faire comprendre le fonctionnement de la mémoire
en Java
Initier à l'optimisation mémoire
Sommaire
3
Garbage Collecting

Garbage Collecting







Différentes zones mémoires
Différents algo de collection
Optimisation de la gestion mémoire


Généralités
Buts et principe de fonctionnement général
Fonctionnement JVM


Fonctionnement JVM
Le principe
Mauvaises pratiques
Les outils
Bibliographie
Questions ?
Optimisation
Garbage Collecting : Généralités
4
Garbage Collecting

Différence du C
 Rappel

Fonctionnement JVM
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
Optimisation
Garbage Collecting : Buts et
fonctionnement général
5
Garbage Collecting

Fonctionnement JVM
Optimisation
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
Fonctionnement JVM : Différentes zones
mémoires
6
Garbage Collecting
Fonctionnement JVM
Optimisation
Fonctionnement JVM : Différents
algorithmes : Serial Collector
7
Garbage Collecting
Fonctionnement JVM
Optimisation
New Object Region Old Object Region
Eden
SS1
SS2
Old
Eden
SS1
SS2
Old
Eden
SS2
SS1
Old
Second
GC
Eden
SS2
SS1
Old
X GC
Eden
SS2
SS1
Old
Premier
GC
Fonctionnement JVM : Différents
algorithmes : Mark & Sweep Compact
8
Garbage Collecting
Fonctionnement JVM
Début Full
GC
Old
Fin Full
GC
Old
Optimisation
Fonctionnement JVM : Différents
algorithmes : Parallel Collector
9
Garbage Collecting
Fonctionnement JVM
Optimisation
Fonctionnement JVM : Différents
algorithmes : Concurent Mark & Sweep
10
Garbage Collecting
Fonctionnement JVM
Optimisation
Optimisation : Le principe
11
Garbage Collecting

Fonctionnement JVM
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
Optimisation
Optimisation : Le principe
12
Garbage Collecting

Optimisation
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

Fonctionnement JVM
du GC
Temps de GC proportionnel au nombre d'objet
Optimisation : Le principe
13
Garbage Collecting

Fonctionnement JVM
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
Optimisation
Optimisation : Mauvaises pratiques
14
Garbage Collecting


Fonctionnement JVM
System.gc()
Doubler la quantité de mémoire
Optimisation
Outils : Sortie GC
15
Garbage Collecting

Fonctionnement JVM
Optimisation
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]
Outils : GC Portal
16
Garbage Collecting




Fonctionnement JVM
Optimisation
Vieux : 2004
JVM 1.4
Lourdeur d'installation (scripts perl + sql)
http://java.sun.com/developer/technicalArticles/Pr
ogramming/GCPortal/
Outils : GC Portal
17
Outils : Visual GC
18
Garbage Collecting

Fonctionnement JVM
Optimisation
http://management.netbeans.org/visualgc/index.ht
ml
Outils : Visual GC
19
Outils : JConsole
20
Garbage Collecting

Fonctionnement JVM
Optimisation
Disponible dans le jdk
 Répertoire
bin
 Depuis JDK1.5

http://java.sun.com/developer/technicalArticles/J2
SE/jconsole.html
Outils : JConsole
21
Garbage Collecting
Fonctionnement JVM
Optimisation
Optimisation : Le principe
22
Garbage Collecting




Fonctionnement JVM
Laisser faire la machine
Attendre la stabilité
Ajouter 15 % environ
Tester
Optimisation
Optimisation : Difficulté
23
Garbage Collecting


Fonctionnement JVM
Il faut de l'expérience
Changements
 D'une
version à l'autre
 D'un constructeur à l'autre
Optimisation
Bibliographie
24




http://www.javaperformancetuning.com/
http://java.sun.com/docs/performance/
http://java.sun.com/performance/reference/whitep
apers/tuning.html
http://java.sun.com/performance/reference/whitep
apers/6_performance.html
Questions ?
25
Téléchargement