Profiler gibt Einblicke in Ihre Anwendung wie CPU-, Speicher- und Heap-Auslastung. Es gibt auch Details zu den Anwendungsthreads. In diesem Kapitel wird die Verwendung von VisualVMtool für die Profilerstellung von Java-Anwendungen erläutert. Es kann Entitäten wie CPU und Heap profilieren.
Es wird empfohlen, dass die Leser dieses Tutorials mit den application profilerconcepts vertraut sind.
Einführung
VisualVM ist ein visuelles Tool, das JDK-Tools integriert und Ihnen leistungsstarke profilingcapabilities bietet. Es ermöglicht Ihnen, Heap-Daten zu generieren und zu analysieren, Speicherlecks aufzuspüren, den Garbage Collector zu überwachen und Speicher- und CPU-Profiling durchzuführen.
Vorteile
-
Visuelle Schnittstelle für lokale und Remote-Java-Anwendungen, die auf JVM ausgeführt werden.
-
Überwachung der Speichernutzung der Anwendung und des Laufzeitverhaltens der Anwendung.
-
Überwachung von Anwendungs-Threads
-
Analysieren der Speicherzuordnungen zu verschiedenen Anwendungen.
-
Thread Dumps – sehr praktisch bei Deadlocks und Rennbedingungen.
-
Heap-Dumps – sehr praktisch bei der Analyse der Heap-Speicherzuweisung.
Konfiguration
In diesem Abschnitt erfahren Sie, wie Sie VisualVM konfigurieren. Die Schritte sind asfollow −
-
Laden Sie es hier herunter.
-
Extrahieren Sie die ZIP-Datei.
-
Navigieren Sie zu etc/visualvm.conf-Datei und fügen Sie die folgende Zeile in diese Datei ein −
visualvm_jdkhome=<path of JDK>
-
Wenn Ihr JDK in der C:\Program Files \ Java \ jdk-9.0.1 Verzeichnis dannes sollte so aussehen −
visualvm_jdkhome="C:\Program Files\Java\jdk-9.0.1"
Monitoring-Anwendung
Lassen Sie uns nun sehen, wie die Anwendung zu überwachen. Betrachten Sie die folgenden Schritte, um das gleiche zu verstehen −
- Doppelklicken Sie auf die visualvm.exe-Datei.
- Wählen Sie die Anwendung im linken Bereich aus.
- Wählen Sie die Registerkarte Monitor.
Sie werden zu einem Fenster weitergeleitet, in dem Sie Details zu CPU, Heap, Klassen und Threads erhalten. Um die Verwendung genau zu bestimmen, bewegen Sie die Maus über ein beliebiges Diagramm. Wir können die Verwendung von Heap im obigen Screenshot sehen.
Einblicke in Threads
Java-Anwendung kann mehrere Ausführungsthreads enthalten. Um mehr über Threads zu erfahren,wählen Sie die Registerkarte Threads einer bestimmten Anwendung. Es gibt verschiedene Statistiken über Threads wie die Anzahl der Live-Threads und Daemon-Threads. Die verschiedenen Thread-Zustände sind Running, Sleeping, Waiting, Park und Monitor.
Sampling-Anwendung
VisualVM unterstützt CPU, Memory Sampling und Memory Leak Detection. Um eine Beispielanwendung auszuwählen, wählen Sie Anwendung und wählen Sie die Registerkarte Beispiel −
CPU−Sampling
Klicken Sie für CPU−Sampling auf die Schaltfläche CPU, wie im folgenden Screenshot gezeigt –
Memory Profiling
Klicken Sie für Memory Profiling auf die Schaltfläche Memory, wie im folgenden Screenshot gezeigt –
Speicherlecks
Ein Speicherleck tritt auf, wenn eine Anwendung während der Ausführung den Heap langsam mit Objekten füllt, die nicht automatisch vom Programm gelöscht werden.
Wenn ein Objekt, das nicht vom Programm verwendet wird, nicht gelöscht wird, verbleibt es im Speicher und der GC kann seinen Speicherplatz nicht zurückfordern. Wenn die Anzahl der Bytes und die Anzahl der Instanzen in yourapplication in Ihrem Programm ständig und signifikant zunehmen würde, bis der gesamte Speicherplatz belegt ist, kann dies ein Hinweis auf einen Speicherverlust sein.
Profilerstellungsanwendung
In diesem Abschnitt erfahren Sie, wie Sie eine Anwendung profilieren. Um eine Anwendung zu profilieren, wählen Sie Anwendung im linken Bereich aus und klicken Sie auf die Registerkarte Profil −
CPU−Profilerstellung
Klicken Sie zum Ausführen der CPU−Profilerstellung auf die Schaltfläche CPU, wie im Screenshot unten gezeigt –
Speicherprofilerstellung
Klicken Sie zum Ausführen der CPU-Profilerstellung auf die Schaltfläche CPU, wie im Screenshot unten gezeigt –