Das Wissensportal für IT-Professionals. Entdecke die Tiefe und Breite unseres IT-Contents in exklusiven Themenchannels und Magazinmarken.

SIGS DATACOM GmbH

Lindlaustraße 2c, 53842 Troisdorf

Tel: +49 (0)2241/2341-100

kundenservice@sigs-datacom.de

Der Support von Java 21 für VisualVM ist da

Java 21 ist in aller Munde und jede Zeitschrift, die etwas auf sich hält, beschreibt die neusten Killerfeatures dieses Longterm Support Release (LTS). Auch ich möchte mich in dieser Kolumne mit Java 21 beschäftigen, aber aus einem etwas anderen Blickwinkel – um ein Tool, das in der neuen Version auch vollen Support für das JDK 21 bekommen hat.
Author Image
Thomas Ronzon

Projektleiter und Senior Softwareentwickler


  • 05.02.2024
  • Lesezeit: 6 Minuten
  • 113 Views

VisualVM nennt sich selbst ein visuelles Tool, das die JDK-Befehlszeilen-Tools und leichtgewichtige Profiling-Funktionen integriert. So integriert es zum Beispiel die JDK-Tools jconsole, jps, jinfo, jstack und jmap unter einer GUI und kann durch (selbst entwickelte) Plug-ins leicht erweitert werden. Dabei ist es sowohl für die Entwicklung als auch für den Einsatz in der Produktion konzipiert.

Durch seine GUI erlaubt VisualVM einfachen Zugriff auf Funktionalitäten, die sonst hinter Kommandozeilenparametern "versteckt" sind.

Und was hat dies mit Java 21 zu tun?

In der aktuellen Version 2.1.7 bietet VisualVM volle Unterstützung für Java 21 und ist damit eines der ersten Tools am Markt, die Java 21 vollumfänglich unterstützen.

Wie immer – die Installation

Mittlerweile ist VisualVM als eigenes Projekt bei GitHub [Down] zu finden. Lade es einmal herunter und starte es durch folgenden Aufruf:

bin/visualvm

beziehungsweise:

.\visualvm.exe

Der Startbildschirm

Direkt nach dem Start teilt sich der Bildschirm in verschiedene Bereiche. Prominent in der Mitte befindet sich eine Auswahl mit Hilfethemen zum Umgang mit VisualVM. Interessanterweise öffnet sich beim Klick auf die Einführung keine weitere Hilfeseite, sondern ein gut verständliches Video, das den Nutzer ziemlich schnell zu ersten Erfolgen führt.

Auf der linken Seite des Startbildschirms von VisualVM sehen wir alle gerade laufenden Java-Programme auf dieser Maschine – wie sie auch das JDK-Tool jps gezeigt hätte. Auch unser "Visual-VM", da ebenfalls in Java geschrieben, ist dabei.

Ein einfacher Doppelklick auf den Prozessnamen öffnet gleich vier Tabs zu Informationen zu dieser JVM. Direkt der erste Tab "Overview" zeigt eine Übersicht über die statischen Informationen der ausgewählten JVM. Hierzu zählen neben allgemeinen Dingen, wie Version der JVM oder Argumente, auch, mit welchen Parametern diese Virtuelle Maschine aufgerufen wurde. Wähle einmal in dem "Overview"-Tab den Punkt "System Properties" und du wirst staunen, was hier alles gesetzt ist. Näheres zu JVM-Parametern findest du übrigens in der Tool-Talk-Kolumne von JavaSPEKTRUM 4/22: "Die Java VM – unser liebstes Tool".

Der "Monitor"-Tab erinnert stark an die Ausgabe der jconsole (s. Abb. 1).

Abb. 1: Monitoring der JVM

Interessant wird es aber wieder, wenn man live grafisch sehen kann, welche Threads gerade laufen (s. Abb. 2).

Abb. 2: Die Threads innerhalb der JVM

Es geht tiefer – die Möglichkeit der verschiedenen Dumps

Durch Klick auf die rechte Maustaste bei einem Prozessnamen öffnet sich ein Kontextmenü, das die verschiedenen Möglichkeiten, diesen Prozess zu analysieren, offenbart.

Fangen wir einmal mit einem "Applications Snapshot" an – so sehen wir, dass, nachdem dieser gemacht wurde, der Snapshot ebenfalls links unten mit Zeitstempel auftaucht. Er konserviert quasi die Daten, die bei einem einfachen Aufruf wie oben beschrieben wegrollieren würden. Dabei ist es möglich, beliebig viele dieser Snapshots anzulegen, sodass man diese zu einem späteren Zeitpunkt nicht nur analysieren, sondern auch vergleichen kann.

Ähnlich verhält es sich hier mit Thread- und Heapdumps, die ebenso über dieses Kontextmenü erstellt werden können.

Ein paar Besonderheiten bei der Heapdump-Analyse

Erstellt man einen Heapdump und öffnet diesen, so zeigt sich die sicherlich aus anderen Tools bereits bekannte Übersicht über den Speicherauszug. Interessant ist aber, dass es möglich ist, durch Auswahl des Menüpunkts "Window" (s. Abb. 3) grafisch aufbereitete Informationen zu den GUI-Elementen einer grafischen Anwendung zu bekommen.

Abb. 3: Übersicht über den Heapdump

Ein weiteres interessantes Feature ist, dass VisualVM durch Auswahl des Punkts "OQL Console" eine eigene Konsole zur Auswertung des Heapdumps mitbringt und nicht wie beim JDK-Tool jhat einen eigenen Webserver startet, der dann eine Webapplikation zur Analyse bereitstellt.

Die Plug-ins

Es führt sicherlich zu weit, in diesem Artikel alle Features von VisualVM zu präsentieren, vor allem aber auch deshalb, weil diese VM Plug-ins unterstützt. Um zu sehen, welche Plug-ins verfügbar sind, wählt man einfach "Tools-Plugins".

Im Weiteren möchte ich einmal exemplarisch ein recht interessantes Plug-in vorstellen.

Der grafische Obermüllmann – Visual GC

Sei mal ehrlich – wann hast du dich das letzte Mal ernsthaft um deinen Garbage Collector (GC) gekümmert? Warum nicht? Doch wahrscheinlich, weil er so unauffällig seine Arbeit im Hintergrund erledigt. Das ändert sich mit dem Plug-in "Visual GC", das dir live zeigt, wie das Aufräumen innerhalb deiner VM vonstattengeht (s. Abb. 4).

Abb. 4: Die Aktivitäten des Garbage Collectors

Plug-ins deaktivieren

Plug-ins, die gerade nicht benötigt werden, müssen nicht deinstalliert werden, sondern lassen sich einfach deaktivieren. Diese werden dann beim Start nicht geladen – der Start erfolgt somit schneller und die Anwendung benötigt weniger Speicher, was gerade bei der Analyse von Live-Systemen interessant sein kann. Benötigt man das Plugin dann zu einem späteren Zeitpunkt, kann es einfach wieder aktiviert werden – auch ohne eine Internetverbindung!

Eigene Plug-ins

Das Erstellen von eigenen Plugins ist sicherlich ein weiteres interessantes Thema, allerdings würde dies den Rahmen dieses Artikels sprengen. Interessierte finden jedoch hier [VMP] alles, was sie wissen müssen.

Fazit

Vieles kommt einem bekannt vor – allerdings sind die Funktionalitäten immer in verschiedensten Tools verstreut. VisualVM schafft es, diese zusammen zu bringen, ohne dass eine große Installation notwendig ist. Durch die Möglichkeit, Plug-ins hinzuzufügen und auch eigene zu schreiben, lassen sich Tools integrieren, ohne sich um die Basis-Analysemöglichkeiten kümmern zu müssen.

Einen hab ich noch …

Auch wenn dies nicht VisualVM, sondern eher das ganze JDK betrifft: Für alle, die es noch nicht mitbekommen haben: Das 32-Bit Windows JDK ist als deprecated markiert (JEP 449). Wundert euch also nicht, wenn ihr keine 32-Bit Version findet!

Weitere Informationen

[Down] https://visualvm.github.io/

[VMP] https://raw.githubusercontent.com/visualvm/visualvm.java.net.backup/master/www/api-quickstart.html

. . .

Author Image

Thomas Ronzon

Projektleiter und Senior Softwareentwickler
Zu Inhalten

Thomas Ronzon arbeitet als Projektleiter und Senior Softwareentwickler bei der w3logistics AG in Dortmund. Dabei beschäftigt er sich vor allem mit der Modernisierung von unternehmenskritischen Logistikanwendungen. Darüber hinaus veröffentlicht Thomas Ronzon regelmäßig Fachartikel.


Artikel teilen

Nächster Artikel
Agil, aber sicher!