1 FONCTIONNEMENT MMOIRE DE LA JVM Julien Herr

  • Slides: 25
Download presentation
1 FONCTIONNEMENT MÉMOIRE DE LA JVM Julien Herr IR 3 – 22/02/2008

1 FONCTIONNEMENT MÉMOIRE DE LA JVM Julien Herr IR 3 – 22/02/2008

Objectifs de l’exposé 2 Faire comprendre le fonctionnement de la mémoire en Java Initier

Objectifs de l’exposé 2 Faire comprendre le fonctionnement de la mémoire en Java Initier à l'optimisation mémoire

Sommaire 3 Garbage Collecting Différentes zones mémoires Différents algo de collection Optimisation de la

Sommaire 3 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 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

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

5 Garbage Collecting : Buts et fonctionnement général Garbage Collecting Fonctionnement JVM Optimisation 2

5 Garbage Collecting : Buts et fonctionnement général 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

6 Fonctionnement JVM : Différentes zones mémoires Garbage Collecting Fonctionnement JVM Optimisation

6 Fonctionnement JVM : Différentes zones mémoires Garbage Collecting Fonctionnement JVM Optimisation

7 Fonctionnement JVM : Différents algorithmes : Serial Collector Garbage Collecting Fonctionnement JVM Optimisation

7 Fonctionnement JVM : Différents algorithmes : Serial Collector Garbage Collecting Fonctionnement JVM Optimisation New Object Region Old Object Region Eden SS 1 SS 2 Old Eden SS 2 SS 1 Old Second GC Eden SS 2 SS 1 Old X GC Eden SS 2 SS 1 Old Premier GC

8 Fonctionnement JVM : Différents algorithmes : Mark & Sweep Compact Garbage Collecting Fonctionnement

8 Fonctionnement JVM : Différents algorithmes : Mark & Sweep Compact Garbage Collecting Fonctionnement JVM Début Full GC Old Fin Full GC Old Optimisation

9 Fonctionnement JVM : Différents algorithmes : Parallel Collector Garbage Collecting Fonctionnement JVM Optimisation

9 Fonctionnement JVM : Différents algorithmes : Parallel Collector Garbage Collecting Fonctionnement JVM Optimisation

10 Fonctionnement JVM : Différents algorithmes : Concurent Mark & Sweep Garbage Collecting Fonctionnement

10 Fonctionnement JVM : Différents algorithmes : Concurent Mark & Sweep Garbage Collecting Fonctionnement JVM Optimisation

Optimisation : Le principe 11 Garbage Collecting Fonctionnement JVM Stratégie par défaut de la

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

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

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

14 Optimisation : Mauvaises pratiques Garbage Collecting Fonctionnement JVM System. gc() Doubler la quantité

14 Optimisation : Mauvaises pratiques 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 :

Outils : Sortie GC 15 Garbage Collecting Fonctionnement JVM Optimisation Commande JVM -verbosegc : [GC 1667 K->1295 K(1984 K), 0. 0101756 secs] [GC 1807 K->1434 K(1984 K), 0. 0223998 secs] [GC 1946 K->1574 K(2112 K), 0. 0116185 secs] [Full GC 1574 K->1574 K(2112 K), 0. 0830561 secs] [GC 3454 K->2081 K(4672 K), 0. 0495951 secs] [GC 4001 K->2599 K(4672 K), 0. 0274256 secs] [GC 4519 K->3101 K(5056 K), 0. 0308995 secs] [Full GC 3101 K->3101 K(5056 K), 0. 1452472 secs] [GC 7039 K->4131 K(9452 K), 0. 0777414 secs] [GC 8227 K->5174 K(9452 K), 0. 0627538 secs] [GC 9270 K->6209 K(10348 K), 0. 1125570 secs]

Outils : GC Portal 16 Garbage Collecting Fonctionnement JVM Optimisation Vieux : 2004 JVM

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/technical. Articles /Programming/GCPortal/

Outils : GC Portal 17

Outils : GC Portal 17

Outils : Visual GC 18 Garbage Collecting Fonctionnement JVM Optimisation http: //management. netbeans. org/visualgc/inde

Outils : Visual GC 18 Garbage Collecting Fonctionnement JVM Optimisation http: //management. netbeans. org/visualgc/inde x. html

Outils : Visual GC 19

Outils : Visual GC 19

Outils : JConsole 20 Garbage Collecting Fonctionnement JVM Optimisation Disponible dans le jdk Répertoire

Outils : JConsole 20 Garbage Collecting Fonctionnement JVM Optimisation Disponible dans le jdk Répertoire bin Depuis JDK 1. 5 http: //java. sun. com/developer/technical. Articles /J 2 SE/jconsole. html

Outils : JConsole 21 Garbage Collecting Fonctionnement JVM Optimisation

Outils : JConsole 21 Garbage Collecting Fonctionnement JVM Optimisation

Optimisation : Le principe 22 Garbage Collecting Fonctionnement JVM Laisser faire la machine Attendre

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

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/whi

Bibliographie 24 http: //www. javaperformancetuning. com/ http: //java. sun. com/docs/performance/ http: //java. sun. com/performance/reference/whi tepapers/tuning. html http: //java. sun. com/performance/reference/whi tepapers/6_performance. html

Questions ? 25

Questions ? 25