Das Java Development Kit (JDK) stellt Binärdateien, Tools und Compiler für die Entwicklung von Java-Anwendungen bereit. Ein hilfreiches Tool, das enthalten ist, ist jconsole.
Zur Veranschaulichung verwende ich den WildFly J2EE-Anwendungsserver, der Teil des JBOSS Open-Source-Anwendungsserverprojekts ist. Zuerst starte ich eine eigenständige Instanz.
~/wildfly/24.0.1/bin$ ./standalone.sh
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /home/alan/wildfly/24.0.1
JAVA: /usr/lib/jvm/java-11-openjdk-11.0.11.0.9-5.fc34.x86_64/bin/java
Jetzt tippe ich in einem anderen Terminal jconsole
.
$ jconsole
Beim Start listet jconsole lokale Instanzen auf. Wählen Sie Lokaler Prozess aus, wählen Sie dann den Namen des Prozesses aus und klicken Sie auf Verbinden. Das ist alles, was Sie brauchen, um jconsole mit einer laufenden Java Virtual Machine (JVM) zu verbinden und zu verwenden.
jconsole_new_connection_local.png
(Alan Formy-Duvall, CC BY-SA 4.0)
Überblick
Die Java Monitoring and Management Console zeigt die Prozesskennung (PID) oben im Dashboard an. Die Registerkarte Übersicht enthält vier Diagramme, um die wichtigsten Werte für Heap-Speicherauslastung, Threads, Klassen und CPU-Auslastung anzuzeigen.
jconsole_tab_overview.png

(Alan Formy-Duvall, CC BY-SA 4.0)
Die Registerkarten am oberen Rand bieten detailliertere Ansichten der einzelnen Bereiche.
Speicher
Auf der Registerkarte Speicher werden Diagramme verschiedener Aspekte des von der JVM verwendeten Speichers angezeigt. Die Menge des der JVM zugeordneten Systemspeichers des Servers wird als Heap bezeichnet. Dieser Bildschirm enthält auch Details zur Nutzung durch die internen Komponenten des Heaps, wie z. B. Eden Space, Old Gen und Survivor Space. Sie können auch manuell eine Garbage-Collection-Aktion anfordern.
jconsole_tab_memory.png

(Alan Formy-Duvall, CC BY-SA 4.0)
Themen
Die Registerkarte Threads zeigt an, wie viele Threads ausgeführt werden. Sie können auch manuell nach Deadlocks suchen.
jconsole_tab_threads.png

(Alan Formy-Duvall, CC BY-SA 4.0)
Klassen
Auf der Registerkarte Klassen erfahren Sie, wie viele Klassen geladen und wie viele entladen wurden.
jconsole_tab_classes.png

(Alan Formy-Duvall, CC BY-SA 4.0)
VM-Zusammenfassung
Die Registerkarte VM-Zusammenfassung enthält viele Details zur Anwendung und zum Hostsystem. Sie können erfahren, welches Betriebssystem und welche Architektur Sie verwenden, die Gesamtmenge des Systemspeichers, die Anzahl der CPUs und sogar den Auslagerungsbereich.
jconsole_tab_vm-summary.png

(Alan Formy-Duvall, CC BY-SA 4.0)
Weitere Details zur JVM, die in der Zusammenfassung angezeigt werden, umfassen die aktuelle und maximale Heap-Größe sowie Informationen zu den verwendeten Garbage Collectors. Der untere Bereich listet alle an die JVM übergebenen Argumente auf.
MBeans
Auf der letzten Registerkarte, MBeans, können Sie alle MBeans durchsuchen, um die Attribute und Werte für jede anzuzeigen.
jconsole_tab_mbeans.png

(Alan Formy-Duvall, CC BY-SA 4.0)
Abschluss
Java gibt es schon seit langer Zeit und es treibt Millionen von Systemen weltweit an. Es stehen zahlreiche Entwicklungsumgebungen und Überwachungssysteme zur Verfügung, aber ein im Basiskit enthaltenes Tool wie jconsole kann sehr wertvoll sein.