Definition

Java Mission Control

Java Mission Control ist ein Tool zur Leistungsanalyse, das gesampelte JVM-Metriken in leicht verständlichen Graphen, Tabellen, Histogrammen, Listen und Diagrammen darstellt. Ursprünglich entwickelt, um leichtgewichtige Sampling-Daten darzustellen, die das Java Flight Recorder Profiling-Tool erfasste, hat sich der Umfang von Java Mission Control mittlerweile deutlich erweitert. Die Software hat sich zu einem One-Stop-Shop für die Fehlersuche in Anwendungen entwickelt, da es nun mit einer Reihe von anderen Dienstprogrammen zur Überwachung der Java-Performance- und Tuning-Tools für die Java Virtual Machine (JVM) integriert werden kann.

Java Flight Recorder ist ein Sampling-basierter JVM-Profiler und ein Tool zur Ereignissammlung, das direkt in die JVM integriert ist. Java Flight Recorder schreibt jedoch alle seine Daten in ein binäres Format, das von Standard-Performance-Reporting-Tools nicht ohne Weiteres verarbeitet werden kann. Java Mission Control wurde entwickelt, um die in einer Flight-Recorder-Datei enthaltenen Daten zu analysieren und die Performance-Metriken anschließend in einer visuell ansprechenden Weise darzustellen.

Java Mission Control Profiling

Java Mission Control stellt Java-Anwendungs- und JVM-Performance-Metriken in standardmäßigen Listen und Tabellen dar, aber auch als

  • Histogrammen
  • Kreisdiagrammen
  • Liniengrafik
  • Flammenlinien
  • Punktediagramme

Entwickler können Java-Mission-Control-Diagramme verwenden, um diese JVM-Leistungsprobleme zu beheben:

  • Gleichzeitige Thread-Sperren, -Pausen und Deadlocks;
  • Java-Ausnahme- und Fehlermetriken;
  • Thread-Dump-Analyse;
  • Gleichzeitige Mark-Sweep- und G1-Garbage-Collection-Pausen;
  • Zurückgeforderte und zombifizierte Code-Cache-Methoden;
  • Thread-Local-Area-Buffer-Anweisungen;
  • Native Bibliothekszugriffe;
  • CPU-Nutzung und Spitzenwerte; und
  • Speicher- und Heap-Verbrauch.

Automatisierte Ereignisdatenanalyse

Automatisierte Analyse
Abbildung 1: Java Mission Control kann Java-Leistungsprobleme und Optimierungsmöglichkeiten automatisch erkennen.

Neben dem visuell ansprechenden Format verfügt Java Mission Control auch über eingebaute KI-Funktionen, die eine Musteranalyse der Flight-Recorder-Dateien durchführen. Nach dieser Analyse informiert Java Mission Control den Benutzer, wenn bestimmte Statistiken außerhalb der normalerweise akzeptablen Bereiche liegen. Dies zeigt an, worauf sich ein Entwickler oder DevOps-Profi beim JVM-Tuning und der Java-Optimierung konzentrieren sollte.

Java Mission Control und JRockit

Java Mission Control
Abbildung 2: Diese Heap-Analyseseite von Java Mission Control zeigt ein prototypisches Java-Speicherleck und die Auswirkungen auf Pausen in der Garbage Collection.

Java Mission Control ist das Ergebnis einer Reihe von Übernahmen. Sowohl Java Mission Control als auch das dazugehörige Tool Java Flight Recorder wurden von Appeal Virtual Machines als Ergänzung zur leistungsstarken virtuellen Maschine JRockit entwickelt. Im Jahr 2008 kaufte Oracle BEA WebLogic, das Appeal Virtual Machines im Jahr 2002 übernommen hatte. Oracle integrierte daraufhin sowohl Java Mission Control als auch Java Flight Recorder in die Version 7.40 des JDK. Die Tools wurden 2018 für die Open-Source-Community freigegeben.

Java versus JDK Flight Recorder

Während das Profiling Tool Java Flight Recorder in die JVM integriert ist, ist Java Mission Control separat verpackt und muss von einem JVM-Anbieter wie Azul, Eclipse Adoptium, Red Hat oder Oracle heruntergeladen werden.

Da Java ein Markenzeichen von Oracle ist, können Drittanbieter den Namen nicht in ihre Builds von Mission Control aufnehmen. Während Oracle seine Distribution weiterhin als Java Mission Control bezeichnet, verwenden andere Anbieter den Begriff JDK Mission Control, um Markenrechtsverletzungen zu vermeiden. JMC wird häufig als Kurzform für Java Mission Control verwendet. Java Flight Recorder wird oft als JFR bezeichnet. Wenn Sie also nach einer Java-Mission-Control-Option suchen, wird das Tool wahrscheinlich als JDK Mission Control bezeichnet.

JVM-Überwachung in Echtzeit

Neben der Möglichkeit, Flight-Recorder-Dateien zu analysieren, kann Java Mission Control auch eine Verbindung zu laufenden JVMs herstellen und mit Unterstützung eines Managed-Beans-Servers (MBeans) ein Profil dieser Anwendungen erstellen. MBeans stellt Laufzeitinformationen über aktive JVMs zur Verfügung. Die Integration mit dem MBeans-Server ermöglicht Java Mission Control die Live-Überwachung einer Vielzahl von Metriken, darunter: CPU-Auslastung, Speicherverbrauch, Metaspace-Nutzung und Garbage Collection.

MBeans Server
Abbildung 3: Java Mission Control kann einen MBeans-Server zur Live-Überwachung von Metriken von Anwendungsservern wie Tomcat oder Jetty überwachen.

Java Mission Control bietet auch eingebetteten Zugriff auf das Java Diagnostic Command Tool jcmd. Entwickler können damit eine Reihe von VM-Operationen gegen eine laufende JVM ausführen, insbesondere um:

  • einen Memory Heap Dump zu erstellen,
  • ein Histogramm von Klassen auf dem Heap zu erfassen;
  • die String-Tabelle der JVM zu inspizieren;
  • Java Flight Recorder zu stoppen und zu starten;
  • einen Befehl zum Starten der Garbage Collection auszugeben; und
  • alle JVM-Compiler-Regeln auszugeben.

Mission Control versus VisualVM

Das JDK wird mit einer Reihe von JVM-Monitoring und Inspektions-Tools ausgeliefert, darunter JConsole und VisualVM. Diese Tools sind Optionen für Unternehmen, die nicht an dem zusätzlichen Aufwand interessiert sind, der mit dem Download und der Installation von Java Mission Control von einem Drittanbieter verbunden ist.

Diese Definition wurde zuletzt im April 2021 aktualisiert

Erfahren Sie mehr über Softwareentwicklung