JAXenter.de

Das Portal für Java, Architektur, Cloud & Agile

Diagnosewerkzeug VisualVM mit dem Java-Update 7 veröffentlicht

Laufzeitinformationen der JVM visualisieren

Diagnosewerkzeug VisualVM mit dem Java-Update 7 veröffentlicht

Markus Stäuble

Die Informationsflut über laufende Java-Prozesse war schon immer sehr groß. Das Zusammenstellen der notwendigen Informationen wurde bisher aber immer dem Entwickler oder anderen Tool-Herstellern überlassen. Innerhalb des JDK gibt es eine große Fülle von Tools, die sowohl für die Eingabe als auch für die Ausgabe kommandozeilenbasiert sind. Zeitgleich mit dem aktuellen Update 7 von Java 6 wurde nun das grafische Diagnosewerkzeug VisualVM in einer finalen Version 1.0 fertig gestellt und in das JDK integriert (wir berichteten).

Im bin-Verzeichnis einer JDK-Installation steht der Entwickler einer großen Auswahl von kommandozeilenbasierten Tools gegenüber, die zur Auswertung von Laufzeitinformationen der JVM eingesetzt werden können. Um mit den Ergebnissen dieser Tools auch sinnvoll etwas anfangen zu können, müssen diese oft manuell ausgewertet oder in ein spezielles Tool geladen werden. Für die schnelle Analyse bzw. Auswertung zwischendurch wünscht man sich aber doch eine einfach lesbare Darstellung. Im bin-Verzeichnis des JDK 6 Update 7 befindet sich nun VisualVM (unter Windows: jvisualvm.exe). Nach dem Start (Abb. 1) des Werkzeugs erkennt man sofort die technische Basis, nämlich NetBeans.



Abb. 1: VisualVM mit einem ausgewählten Prozess

VisualVM bietet dem Entwickler prinzipiell nichts Neues, sondern stellt hauptsächlich eine einheitliche Oberfläche für schon vorhandene Tools wie jstat, jinfo oder auch die JConsole dar. Das Besondere daran ist, dass der Entwickler nun noch ein Tool bedienen muss und nicht wie zuvor für jede Abfrage ein anderes Tool. Sobald eine neue Java-Anwendung (eine neue JVM) gestartet wird, erscheint diese auch in innerhalb der Applikationen (Abb. 2). Für die Ermittlung der Informationen wird u.a. das Tool jps verwendet, das ebenfalls Bestandteil des JDK ist.



Abb. 2: Darstellung der einzelnen JVMs

Für die Analyse stehen viele Informationen zur Verfügung. Somit ist es z.B. möglich, laufende Anwendungen zu instrumentieren und dadurch ein rudimentäres CPU- bzw. Memoryprofiling durchzuführen. In Abbildung 3 ist z.B. das CPU-Profiling einer laufenden Eclipse-3.4-Instanz abgebildet.



Abb. 3: Profiling einer Eclipse 3.4 Instanz in Aktion

Natürlich sind die eingebauten Profiler kein Ersatz für ein professionelles Profilingwerkzeug. Trotzdem können diese Analysemöglichkeiten für erste Aussagen sehr hilfreich sein und sind um einiges besser lesbar als die Textausgabe von hprof. Neben dem Profiler ist die Zusammenfassungsseite (Reiter Monitor, siehe auch Abb. 1) eine sehr gelungene Darstellung, um Information über den aktuellen Zustand der zu untersuchenden VM zu bekommen. Auch die Möglichkeit, über Knopfdruck einen Thread Dump zu erzeugen (Button Thread Dump unter Reiter Threads), gefällt wirklich sehr.

Für die Erweiterung ausgelegt

Da als Basis NetBeans gewählt wurde, kann VisualVM auch von dessen Plug-in-Architektur profitieren. Und somit wird gleich zum Release ein Mechanismus zur Installation von Plug-ins (über Menüpunkt Tools/Plugins) zur Verfügung gestellt. Ein sehr interessantes Plug-in ist z.B. Visual GC (Abb. 4). Dieses Plug-in dient der grafischen Darstellung der Garbage Collection. Mit dieser Ansicht werden die einzelnen Generationen (wie Eden Space oder auch Perm Gen) grafisch dargestellt. Diese Ansicht stellt einen klaren Mehrwert dar.



Abb. 4: Die Darstellung des Plugins Visual GC

Die derzeit verfügbaren Plug-ins sind hier aufgeführt. Auch ein Tutorial zur Entwicklung eines eigenen Plug-ins steht bereits zur Verfügung. Das Tutorial beschreibt, wie zu erwarten, die Entwicklung mittels NetBeans. Durch diesen Erweiterungsmechanismus sind alle Tore für viele weitere Plug-ins geöffnet.
Zum Abschluss sei noch erwähnt, dass für den Start von VisualVM mindestens ein Java der Version 6 benötigt wird. Die Anwendungen, die analysiert werden sollen, können auch mit einer niedrigeren Version als Java 6 laufen. Außerdem kommt als Lizenz die GPL v2 mit Classpath Exception zum Einsatz.

Ein guter Grundstein, der gefehlt hat

Mit dem Tool JConsole, das mit dem Release von Java 5 ein fester Bestandteil eines JDK ist, wurde schon ein erster Grundstein zur grafischen Darstellung von Laufzeitinformationen gelegt. Dieses Tool hat aber vor allem den Fokus auf JMX gesetzt. Mit VisualVM wird nun ein Werkzeug zur Verfügung gestellt, das alle Informationen unter einem Dach vereinen soll. Denn wenn man nicht täglich mit den kommandobasierten Tools umgeht, ist eine effiziente und nutzbringende Verwendung beinahe ausgeschlossen. Dieses Manko wird nun durch VisualVM hervorragend behoben. Vor allem die Aussicht, dass durch Plug-ins die Funktionalität zusätzlich ausgebaut wird, lässt hier Einiges erhoffen. Insgesamt ist VisualVM sehr gut zu bedienen und man stellt sich die Frage: Wie hat es bis jetzt ohne VisualVM funktioniert?

Markus Stäuble ist CTO (Head of Technology) bei namics (deutschland) GmbH, einem führenden IT- und Web-Dienstleister. Darüber hinaus ist er freier Autor von Fachartikeln.
 

Kommentare

Ihr Kommentar zum Thema

Als Gast kommentieren:

Gastkommentare werden nach redaktioneller Prüfung freigegeben (bitte Policy beachten).