Table of Contents
Java profiling with jconsole + Eclipse MAT
Par exemple, on veut vérifier que la mémoire est bien libérée sur 'Close Project' dans Capsis.
Installer MAT dans Eclipse
- Eclipse > Aide > Install new Software > MAT
Lancer l'application à contrôler
- lancer l'application à profiler depuis un terminal
ex: capsis > New Project > PP3 > Creation > Ok > Evolution > 2 etapes > Fermer projet
Générer un .hprof avec JConsole
- générer un dump .hprof avec jconsole
ex: /home/coligny/Applications/jdk1.6.0_21/bin/jconsole MBeans > com.sun.management > hotspot diagnostic > operation > dumphead > champ 1: fileName.hprof, champ 2: true
Rq1 : vraiment extension .hprof
Rq 2: enregistrer ou copier le .hprof dans le répertoire d'install de l'application capsis sous Eclipse
Sélectionner le .hprof dans Eclipse
- Dans eclipse : projet Capsis > <F5> pour faire apparaitre de .hprof et double-clic > Leak suspects report
MAT Dominator tree
Puis dominator tree : objets en mémoire au moment du dump
- chercher les instances de Project et qui détient les références pour voir si c'est normal après une fermeture projet
- Regex : Project
- clic droit > List objects with incoming references (objets qui référencent l'élément sélectionné)
- Current .previousProject ← suspect…
- Pp3Model.project
- ProjectDrawing.project ← suspect…
- ProjectPanel.project ← suspect…
MAT combien d'instances pour une classe donnée
Barre d'outils MAT > Create an histogram from an arbitrary set of objects
Regex: 'Step'
→ le nombre d'instances est visible
Ressource : https://davidmasclet.gisgraphy.com/post/2010/02/05/Détecter-et-corriger-les-fuites-mémoire-java