Verwenden wir Oracle Java Mission Control (JMC) / Java Flight Recorder (JFR), ein kostenpflichtiges Überwachungs- und Fehlerbehebungstool, das von Oracle Java7 u40 oder höher verfügbar ist.
--Oracle JDK 8 spätestens --OS: Windows 7 (Natürlich kann jede Art von Betriebssystem verwendet werden, solange das JDK ausgeführt wird.)
--JMC / JFR selbst ist in das JDK integriert. Wenn Sie das JDK bereits installiert haben, ist kein zusätzlicher Download oder eine zusätzliche Installation erforderlich! Sie können es gemäß der folgenden Ausführungsmethode verwenden.
$ {JAVA_HOME} \ bin \ jmc.exe
aus-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
java.exe -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=my_recording.jfr MyJavaApplication
--2 Beginnen Sie mit dem Befehl jcmd
- jcmd <PID> JFR.start duration=60s filename=my_recording.jfr
―― 3. Starten Sie von der JMC-GUI (am einfachsten)Laden Sie "Java SE Development Kit 8uXXX Demos und Beispiele Downloads zip" von [JDK Download Site] herunter (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). Tatsächlich ist auch die Beispieldatei von jfr darin enthalten.
--Lage: Ordner "sample \ missioncontrol \ flightrecordings" in der oben heruntergeladenen Zip-Datei
demo \ jfc \ Java2D \ Java2Demo.jar
in der Zip-Datei
--wldf.jfr: [MedRec-Beispiel von WebLogic](http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/wls/12c/12_2_1/02-34-004-DeploySampleApplication/deploysampleapplication.html# JFR-Aufnahmeprobe in Abschnitt 4)Führen Sie $ {JAVA_HOME} \ bin \ jmc.exe
aus
Wählen Sie java2d_demo.jfr unter Datei-> Datei öffnen ... und öffnen Sie es. Wie unten Wenn Sie den Bildschirm sehen können, ist es OK.
Lassen Sie uns tatsächlich mit Java2Demo.jar aufnehmen, das in Java Demos und Samples enthalten ist.
Führen Sie die Datei Java2Demo.jar wie folgt aus
SET JDK_HOME=<JDK-Pfad>
SET PRG=D:\A_Dev\Java\jdk-8u101-windows-x64-demos\jdk1.8.0_101\demo\jfc\Java2D\Java2Demo.jar
SET JVM=-Xmx32m -Xms16m ← Um häufig GC zu generieren. Nicht benötigt
SET JFR=-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
%JDK_HOME%\bin\java %JVM% %JFR% -jar %PRG%
Klicken Sie hier für das Bildschirmbild von Java2Demo.jar. Wenn Sie laden möchten, wählen Sie die Registerkarte "Transformationen" und stellen Sie die Anim-Verzögerung auf der rechten Seite des Bildschirms kurz ein.
Wenn Sie jmc.exe starten, wird der folgende Bildschirm angezeigt. Sie sollten den Java2Demo.jar-Prozess auf der linken Seite sehen. Der zweite Prozess "The JVM Running Mission Control" auf der linken Seite ist der eigene Prozess von jmc.
Klicken Sie mit der rechten Maustaste auf den Prozessteil und wählen Sie "Flugaufzeichnung starten ...".
Stellen Sie im Bildschirm "Flugaufzeichnung starten" unten die Aufnahmezeit auf "1 min" und die Ereigniseinstellung auf "Profiling - on server" ein. Klicken Sie auf die Schaltfläche "Fertig stellen", um die Aufnahme zu starten.
Das folgende Popup wird angezeigt und die Aufnahme wird gestartet. Spielen Sie mit der Java2Demo.jar-App (mit oder ohne Last), während Sie 1 Minute warten.
Nach 1 Minute sollte die automatisch aufgenommene .jfr-Datei gestartet werden.
Sie können die Durchschnitts- und Maximalwerte von "Heap-Auslastung", "CPU-Auslastung" und "GC-Pausenzeit" für 1 Minute wie folgt aufzeichnen.
Wählen Sie links die Hauptregisterkarte "Speicher" und dann die Unterregisterkarte "Garbage Collection". Es ist ersichtlich, dass GC häufig auftritt, wie unten gezeigt.
Wählen Sie links die Hauptregisterkarte "Code" und dann die Unterregisterkarte "Hot Methods". Sie können sehen, dass "java.util.HashMap.put", "java.awt.TexturePaintContext ..." während der 1-minütigen Aufnahme am häufigsten aufgerufen wurde.
Die Gesamtkonfiguration des Bildschirms besteht aus einer Hauptregisterkarte links und Unterregistern für jede Hauptregisterkarte. Die Bildschirmkonfiguration für jede Hauptregisterkarte lautet wie folgt (* Auf der Hauptregisterkarte von WebLogic in der Bildschirmaufnahme sehen Sie, ob das Plugin für WebLogic installiert ist.)
I/O
(* Im Folgenden sind die Registerkartennamen in englischer Sprache verfasst. Da die meisten verschiedenen Handbücher und Referenzen in englischer Sprache verfasst sind, ist es einfacher, sich mit englischen Namen an sie zu gewöhnen.)
No | Main Tab | Sub Tab | Erläuterung |
---|---|---|---|
1_1 | General | Overview | Grundlegende Informationen wie maximale Heap-Auslastung, Gesamt-CPU-Auslastung und GC-Pausenzeit |
1_2 | JVM Information | JVM-Informationen | |
1_3 | System Properties | Alle Systemeigenschaften, die auf Betriebssystemebene festgelegt wurden | |
1_4 | Recording | Informationen zum Zeitpunkt der JFR-Aufzeichnung (welches Ereignis wurde aktiviert) | |
2_1 | Memory | Overview | Allgemeine Informationen zur Speichernutzung und Statistiken zur Speicherbereinigung |
2_2 | Garbage Collections | Informationen zur Speichernutzung im Zeitverlauf und zu allen Speicherbereinigungen | |
2_3 | GC Times | Informationen darüber, wie lange es gedauert hat, den GC auszuführen, und wie lange die Anwendung aufgrund des GC vollständig angehalten hat | |
2_4 | GC Configuration | Informationen zur GC-Konfiguration | |
2_5 | Allocations | Alle Speicherzuordnungen vorgenommen.* TLAB (Thread Local Area Buffer) -Ein kleiner Speicherbereich, dem neue Objekte zugeordnet werden | |
2_6 | Object Statistics | Klasse mit Live-Set | |
3_1 | Code | Overview | Zeigt die Pakete und Klassen an, die die meiste Ausführungszeit verbracht haben |
3_2 | Hot Methods | Methode mit den meisten Stichproben | |
3_3 | Call Tree | Zeigen Sie heiße Methodenthreads in umgekehrter Reihenfolge an | |
3_4 | Exceptions | Ausgelöste Ausnahme anzeigen | |
3_5 | Compilations | Zeigt kompilierte Methoden an, als die Anwendung ausgeführt wurde | |
3_6 | Class Loading | Zeigt die Anzahl der im Laufe der Zeit geladenen Klassen, die tatsächlich geladenen Klassen und die geladenen Klassen an | |
4_1 | Thread | Overview | Änderungen der CPU-Auslastung und der Anzahl der Threads im Laufe der Zeit |
4_2 | Hot Threads | Zeigt Threads an, die den größten Teil der Codeausführung ausführen | |
4_3 | Contention | Sperren Sie Konfliktinformationen | |
4_4 | Latencies | Schlaf oder Wartezeit Anruf, aus Socket lesen, Datei I./Zeigen Sie andere Ursachen für die Wartezeit an, z. B. das Warten auf O. | |
4_5 | Thread Dumps | Zeigt periodische Thread-Dumps an, die im Datensatz ausgelöst werden können | |
4_6 | Lock Instances | Zeigt die genaue Instanz des Objekts an, das am meisten auf die Synchronisation wartet | |
5_1 | I/O | Overview | |
5_2 | File Reads | File I/O lies | |
5_3 | File Writes | File I/O schreibe | |
5_4 | Socket Reads | Network I/O lies | |
5_5 | Socket Writes | Network I/O schreibe | |
6_1 | System | Overview | CPU, Memory,Betriebssysteminformationen |
6_2 | Process | Systemprozessinformationen zum Zeitpunkt der Aufzeichnung | |
6_3 | Environment | Informationen zu Systemumgebungsvariablen zum Zeitpunkt der Aufzeichnung | |
7_1 | Event | Overview | |
7_2 | Log | ||
7_3 | Graph | ||
7_4 | Threads | ||
7_5 | Stack Traces | ||
7_6 | Histogram |
Recommended Posts