Question

J'ai un serveur de production en cours d'exécution avec l'indicateur suivant: - XX: + HeapDumpOnOutOfMemoryError

La nuit dernière, il a généré un fichier java-38942.hprof lorsque notre serveur a rencontré une erreur de segment de mémoire. Il s’avère que les développeurs du système connaissaient le drapeau mais n’avaient aucun moyen d’obtenir des informations utiles.

Des idées?

Était-ce utile?

La solution

Si vous souhaitez utiliser un outil assez avancé pour fouiller sérieusement, consultez le le projet Memory Analyzer chez Eclipse, avec la contribution de SAP.

Certains de ce que vous pouvez faire sont incroyablement bons pour rechercher des fuites de mémoire, etc. - y compris l'exécution d'une forme de SQL limité (OQL) sur les objets en mémoire, c'est-à-dire.

  

SELECT toString (firstName) FROM com.yourcompany.somepackage.User

Totalement brillant.

Autres conseils

Vous pouvez utiliser JHAT , le Outil d'analyse de pile Java fourni par défaut avec le JDK. C'est en ligne de commande mais démarre un serveur Web / navigateur que vous utilisez pour examiner la mémoire. Pas le plus convivial, mais au moins, il est déjà installé dans la plupart des endroits où vous irez. L’affichage "Histogramme de tas" est très utile. lien tout en bas.

ex: jhat -port 7401 -J-Xmx4G dump.hprof

jhat peut exécuter OQL " ces jours " ainsi (lien inférieur "exécuter OQL")

Vous pouvez également utiliser HeapWalker de Netbeans Profiler ou < a href = "https://visualvm.github.io/" rel = "noreferrer"> outil virtuel Visual VM . La VM virtuelle est une bonne alternative à JHAT car elle est autonome, mais elle est beaucoup plus facile à utiliser que JHAT.

Vous avez besoin de Java 6+ pour utiliser pleinement Visual VM.

Procurez-vous simplement le analyseur de mémoire Eclipse . Il n'y a rien de mieux et c'est gratuit.

JHAT n'est utilisable que pour les "applications jouets"

YourKit Java Profiler semble également les gérer.

Si vous souhaitez effectuer une analyse personnalisée de votre heapdump, vous devez:

Cette bibliothèque est rapide mais vous devrez écrire votre code d'analyse en Java.

À partir de la documentation:

  • Ne crée aucun fichier temporaire sur le disque pour traiter le vidage de tas
  • Peut travailler directement avec des clichés de tas compressés GZ
  • notation HeapPath
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top