====== 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 (add this url: https://www.eclipse.org/mat/downloads.php) ===== 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.8.0_101/bin/jconsole MBeans > com.sun.management > hotspot diagnostic > operation > dumpheap > 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 > 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 Sélection d'un type, clic droit, List objects, * with outgoing references (références sortantes de l'objet : celle qu'il contient vers d'autres objets) * with incoming references (références qui arrivent vers l'objet depuis d'autres objets) Ressource : [[https://davidmasclet.gisgraphy.com/index.php?post/2010/02/05/D%C3%A9tecter-et-corriger-les-fuites-m%C3%A9moire-java]]