1 / 25

Fonctionnement MÉMOIRE de la JVM

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

melia
Download Presentation

Fonctionnement MÉMOIRE de la JVM

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fonctionnement MÉMOIRE de la JVM Julien Herr IR3 – 22/02/2008

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

  3. 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 ?

  4. GarbageCollecting : 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

  5. GarbageCollecting : 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

  6. Fonctionnement JVM : Différentes zones mémoires

  7. Fonctionnement JVM : Différents algorithmes : Serial Collector New Object Region Old Object Region Eden SS1 SS2 Old PremierGC Eden SS1 SS2 Old Eden SS2 SS1 Old SecondGC Eden SS2 SS1 Old Eden SS2 SS1 Old X GC

  8. Fonctionnement JVM : Différents algorithmes : Mark & Sweep Compact Début FullGC Old Fin FullGC Old

  9. Fonctionnement JVM : Différents algorithmes : ParallelCollector

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

  11. 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

  12. 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

  13. 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

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

  15. Outils : Sortie GC • 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]

  16. Outils : GC Portal • Vieux : 2004 • JVM 1.4 • Lourdeur d'installation (scripts perl + sql) • http://java.sun.com/developer/technicalArticles/Programming/GCPortal/

  17. Outils : GC Portal

  18. Outils : Visual GC • http://management.netbeans.org/visualgc/index.html

  19. Outils : Visual GC

  20. Outils : JConsole • Disponible dans le jdk • Répertoire bin • Depuis JDK1.5 • http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html

  21. Outils : JConsole

  22. Optimisation : Le principe • Laisser faire la machine • Attendre la stabilité • Ajouter 15 % environ • Tester

  23. Optimisation : Difficulté • Il faut de l'expérience • Changements • D'une version à l'autre • D'un constructeur à l'autre

  24. 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

  25. Questions ?

More Related