jmap und jhat

[Letzte Woche von einem Kollegen gelernt]: Java bietet mit jmap und jhat zwei mächtige Tools, um den kompletten Heap eines Javaprozesses zu analysieren.

Mit “jmap -dump:file=mydump” wird ein Snapshot des gesamten Java Heaps erzeugt und in einem binären Format ins aktuelle Verzeichnis abgelegt. Dieser Dump ist das Ausgangsmaterial für jhat. Ein kleiner Hinweis für die Mac-Nutzer: Unter Mac OSX funktioniert dies leider nicht. Hier muss man den Dump mit der HotSpotDiagnosticMXBean innerhalb der JConsole erzeugen.

Mit “jhat mydump” wird ein HTTP-Server gestartet, der die im Dump enthaltenen Klassen und Instanzen präsentiert. Über die Abfragesprache OQL (Object Query Language) kann der Dump auch durchsucht werden. Beispielsweise werden mit “select s from java.lang.String s where s.count >= 500” alle Strings aufgelistet, die länger als 500 Zeichen sind.

Praktisch.

Leave a Reply