web-dev-qa-db-fra.com

Comment analyser un vidage de tas dans IntelliJ? (fuite de mémoire)

J'ai généré un vidage de tas à partir de mon application Java exécutée depuis quelques jours avec l'outil jmap ->, ce qui donne un fichier de vidage de tas binaire volumineux.

Comment puis-je analyser la mémoire de ce tas dans IntellIJ IDEA?

Je sais qu'il existe des outils pour Eclipse et Netbeans, mais je préférerais utiliser IDEA si possible.

Les résultats de base de l'analyse me permettraient de connaître le nombre d'instances de chaque objet en mémoire, par classe, afin de pouvoir démarrer le débogage des fuites de mémoire.

48
vikingsteve

La meilleure chose à faire est Memory Analyzer (MAT) , IntelliJ ne dispose d’aucun analyseur de vidage de tas.

38
Meo

Je voudrais mettre à jour les réponses ci-dessus à 2018 et dire d'utiliser à la fois VisualVM et Eclipse MAT.

Comment utiliser:

VisualVM est utilisé pour la surveillance en direct et le dump heap. Vous pouvez également analyser les décharges de tas avec une grande puissance. Cependant, MAT dispose de davantage de fonctionnalités (telles que l'analyse automatique pour rechercher les fuites) et, par conséquent, je lis la sortie de vidage VisualVM (fichier .hprof) dans MAT.



Obtenez VisualVM:

Téléchargez VisualVM ici: https://visualvm.github.io/

Vous devez également télécharger le plugin pour Intellij: enter image description here

Ensuite, vous verrez dans intellij 2 autres nouvelles icônes orange: enter image description here

Une fois que vous exécutez votre application avec une application orange, dans VisualVM, votre processus est affiché à gauche et les données à droite. Asseyez-vous quelque temps et apprenez cet outil, il est très puissant: enter image description here



Obtenir l'outil d'analyse de la mémoire (MAT) d'Eclipse en tant qu'entité autonome:

Téléchargez ici: https://www.Eclipse.org/mat/downloads.php

Et voici à quoi ça ressemble: enter image description hereenter image description here

J'espère que ça aide!

24
nbtk

Vous pouvez également utiliser VisualVM Launcher pour lancer VisualVM à partir de IDEA. https://plugins.jetbrains.com/plugin/7115?pr=idea Personnellement, je trouve cela plus pratique.

9
Katerina A.

Il existe également une "vue de la mémoire du débogueur JVM" trouvée dans le référentiel du plug-in, ce qui pourrait être utile.

4
Deniss M.

Vous pouvez simplement exécuter "Java VisualVM" qui se trouve à l'adresse jdk/bin/jvisualvm.exe

Cela ouvrira une interface graphique, utilisez le menu "Fichier" -> "Charger ..." puis choisissez votre fichier * .hprof

Ça y est, vous avez terminé!

2
jaken chen