Ich habe einen Produktionsserver mit dem folgenden Flag: - XX: + HeapDumpOnOutOfMemoryError
Letzte Nacht wurde eine java-38942.hprof-Datei generiert, als auf unserem Server ein Heap-Fehler auftrat. Es stellt sich heraus, dass die Entwickler des Systems von der Flagge wussten, aber keine Möglichkeit hatten, nützliche Informationen daraus zu erhalten.
Irgendwelche Ideen?
Sie können JHAT verwenden , das Java Heap Analysis Tool, das standardmäßig mit dem JDK bereitgestellt wird. Es ist eine Befehlszeile, startet jedoch einen Webserver / Browser, mit dem Sie den Speicher untersuchen. Nicht besonders benutzerfreundlich, aber zumindest ist es an den meisten Orten, an denen Sie unterwegs sind, bereits installiert. Eine sehr nützliche Ansicht ist der Link "Heap-Histogramm" ganz unten.
Ex:
jhat -port 7401 -J-Xmx4G dump.hprof
jhat
kann "heutzutage" auch OQL ausführen (unterer Link "OQL ausführen")quelle
Sie können HeapWalker auch über den Netbeans Profiler oder das eigenständige Visual VM -Tool verwenden. Visual VM ist eine gute Alternative zu JHAT, da es eigenständig ist, aber viel einfacher zu verwenden ist als JHAT.
Sie benötigen Java 6+, um Visual VM vollständig nutzen zu können.
quelle
jvisualvm.exe
atJAVASDK/bin
OrdnerHolen Sie sich einfach den Eclipse Memory Analyzer . Es gibt nichts Besseres da draußen und es ist kostenlos.
JHAT kann nur für "Spielzeuganwendungen" verwendet werden.
quelle
YourKit Java Profiler scheint auch damit umzugehen.
quelle
Wenn Sie eine benutzerdefinierte Analyse Ihres Heapdumps durchführen möchten, gibt es:
Diese Bibliothek ist schnell, aber Sie müssen Ihren Analysecode in Java schreiben.
Aus den Dokumenten:
quelle
Ich persönlich bevorzuge VisualVM. Eine der Funktionen, die ich in VisualVM mag, ist der Heap-Dump-Vergleich. Wenn Sie eine Heap-Dump-Analyse durchführen, gibt es verschiedene Möglichkeiten, um herauszufinden, was den Absturz verursacht hat. Eine der Möglichkeiten, die ich als nützlich empfunden habe, ist der Vergleich von gesunden und ungesunden Heap-Dumps.
Die folgenden Schritte können Sie ausführen:
Link: https://visualvm.github.io
quelle