Ist es möglich, threads aus dem dump hprof / threads heap-dump
Ich habe einen großen (5GB) hprof dump, erzeugt durch die Anwendung, wenn OutOfMemoryError
aufgetreten. (Mit XX: HeapDumpOnOutOfMemoryError ).
Leider gibt es keine logs gesammelt werden, wenn dieser Fehler passiert ist. Neu zu erstellen, dies dauert paar Stunden. Ich hatte gehofft, wenn einige tools nicht zeigen konnte das Ausnahme-stack-trace oder alle threads, die stacks von hprof.
Ich bin derzeit mit MAT, konnte nicht einen Weg finden, um thread-Informationen. Welches tool ich verwenden könnte?
(Ich bin nicht sicher, ob hprof-Datei hat Informationen über Gewinde/Position nennen, wenn der OOM ist aufgetreten).
( Ich will wissen wie man thread-dump in den normalen Fällen. Die Mühe hier ist das Ereignis schon passiert ist, alles, was ich habe, ist der dump hprof. )
- Versuchen visualvm (docs.oracle.com/javase/6/docs/technotes/guides/visualvm/...)
- Heap-dump nicht enthalten thread-Informationen. Sie sollten sich auf thread-dump.
- RC . ja, geladen hprof mit VisualVM und es hat eine option, um thread-dumps. Konnten Sie mark als Antwort?
Du musst angemeldet sein, um einen Kommentar abzugeben.
MATTE kann zeigen die threads direkt jetzt (vielleicht wurde Hinzugefügt, da die Frage gestellt wurde).
Beantwortung der eigenen Frage. Kredit geht an @ RC
Ich glaube nicht, dass heap-dump-thread enthält Informationen, mit Ausnahme der GC-Stamm. Wenn Sie brauchen, thread-bezogene Informationen, die Sie benötigen, um thread-dump auch.
Eclipse MAT ermöglicht es Ihnen, um zu sehen, die verdächtigen Fäden in der Leck-verdächtigen melden. Suchen Sie für die Klassen in Ihrer Anwendung namespace mit Ihren Zeilennummern zu finden, wie viel Speicher Sie belegen im heap. Dadurch erhalten Sie einen Hauch von undichten Klassen.
Können Sie töten -3 die Prozess-id, um eine thread-dump-standard aus. Dies wird nicht töten die java-Prozess, so dass Sie es tun können, so oft wie Sie wollen.
als RC angegeben visualVM ist ein gutes Werkzeug, die Ihnen Objekt-Anzahl nach Klasse Typ und alle Arten von Grafiken und profiling-tools.
Verwenden visualvm.
versuchen, zu analysieren, Diagramm, wenn Sie perm heap space übersteigt...
u sollten auch überprüfen Sie die Speicher-Proben & speichern Sie Ihre Momentaufnahme..
Analyse der thread-stack... wird Ihnen helfen, einzugrenzen, um das problem.
Wiederum auf eine option, die Ihren Bedarf
+
- und ausschalten einer option, die Sie brauchen-
Was ist verwirrend darüber ist die Dokumentation, dass es zeigt die default-Einstellung, um es "klar" welche Einstellung haben Sie bereits. Diejenigen, die mit + sind standardmäßig aktiviert, und diejenigen, die mit - standardmäßig deaktiviert sind. Dies bedeutet, wenn Sie kopieren eine der + oder - Optionen aus den Unterlagen, die Sie sollten nichts tun (außer dort, wo der Standard hat sich im Laufe der Zeit geändert)
-XX:-HeapDumpOnOutOfMemoryError schaltet die heap-dump, das ist der Standard.
-XX:+HeapDumpOnOutOfMemoryError dreht sich auf den heap-dump.