2013-11-27 9 views
10

Ich habe dies Get a heapdump on JVM from Tomcat 6 versucht, aber es funktioniert nicht für mich, Gibt es andere Möglichkeiten, Heap Dump von Tomcat Server zu bekommen? Danke im Voraus!Möglichkeiten, wie man Heap Dump von laufenden Tomcat 7

+0

Was ist das Problem, das Sie kennengelernt haben, als Sie versuchten, den Heapspeicherauszug zu erstellen? – Taky

+0

Sie verknüpfen nur machen Heap-Dump, wenn JVM tot wegen nicht genügend Arbeitsspeicher. Es erlaubt Ihnen nicht, Heapdump zu machen, wann immer Sie wollen. Aber es ist immer noch eine sehr nützliche Option für Sie. – Taky

Antwort

17

Der einfachste Weg, um Heap Dump zu erhalten, ist jmap zu verwenden. Führen Sie auf dem Computer mit Java-Prozess den Befehl jmap aus. Anwendungsbeispiel:

jmap -dump:file=/mnt/heapdump_2013-04-01.data 29842 

Verwendung jps wissen java Pid.


Auch Sie können Heap Dump über jvisualvm machen. Sie können über jmx oder jstatd eine Verbindung zur Remote-Maschine herstellen. Sie können Heapdump erstellen und auf dem Remotecomputer speichern.

Zur Analyse von Heapdumps können Sie: MAT. Sehr leistungsfähiges Werkzeug, mit dem Sie Probleme schnell verstehen können. Sie können here gute inro zum MAT finden.


Wenn Sie nicht wollen, Anwendung für eine lange Zeit stoppen Sie binäres Dump machen können (You can use gcore or gdb). Und Sie können use jmap to analyze gdb dump. Weitere Informationen finden Sie auf der atlassian blog. Vorsicht vor someissues.

+0

Sie müssen möglicherweise "sudo" verwenden – th3morg

5

Ein anderer Weg neben dem "Dump Heap" -Button von jvisualvm ist über die JMX-Schnittstelle. Auf diese Weise können Sie sogar angeben, wo der Speicherauszug gespeichert werden soll.

Verbindung zum Tomcat JMX-Server mit Jconsole oder jvisvismvm mit JMX-Plugin. Dann kam zu com.sun.management ->HotSpotDiagnotic ->Operations. Geben Sie neben dumpHeap die zwei Parameter ein. Von Oracle-Dokumentation (siehe here):

Parameter:

output - die systemabhängige Dateinamen

leben - wenn sie wahr Dump nur Objekte leben Objekte also, die von anderen erreichbar sind

Drücken Sie dann dumpHeap und beobachten Sie, wie die VM für einige Zeit beim Schreiben des Dump einfriert.

1

Ich empfehle Visual VM http://visualvm.java.net/ Es ist ein All-in-One-Tool, das mit Tomcat verbinden kann, erstellen und lesen Heap-Dump, erstellt Thread-Dump, CPU und Speicher-Sampler.

Wenn Sie neue jdk 1.7 verwenden, ist VisualVM bereits in Ihrem jdk-Ordner verpackt.

Verwandte Themen