Utilisons Oracle Java Mission Control (JMC) / Java Flight Recorder (JFR), un outil payant de surveillance et de dépannage disponible à partir d'Oracle Java7 u40 ou version ultérieure.
--Oracle JDK 8 dernier --OS: Windows 7 (bien sûr, tout type de système d'exploitation peut être utilisé tant que le JDK fonctionne)
--JMC / JFR lui-même est intégré au JDK, donc si vous avez déjà installé le JDK, aucun téléchargement ou installation supplémentaire n'est requis! Vous pouvez commencer à l'utiliser selon la méthode d'exécution ci-dessous. --Si vous souhaitez utiliser le plugin Eclipse, téléchargez-le à partir du site suivant (non requis) - [Oracle Java Mission Control for Eclipse] (http://download.oracle.com/technology/products/missioncontrol/updatesites/experimental/5.5.0/eclipse/)
--Démarrage de l'interface graphique JMC / JFR
--Exécutez $ {JAVA_HOME} \ bin \ jmc.exe
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
java.exe -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=my_recording.jfr MyJavaApplication
--2 Commencez avec la commande jcmd
- jcmd <PID> JFR.start duration=60s filename=my_recording.jfr
―― 3. Commencez à partir de l'interface graphique JMC (le plus simple)Téléchargez "Java SE Development Kit 8uXXX Demos and Samples Downloads zip" sur Site de téléchargement JDK. En fait, le fichier d'exemple de jfr y est également inclus.
sample \ missioncontrol \ flightrecordings
dans le fichier zip téléchargé ci-dessus
--Exemple de fichier
--java2d_demo.jfr: échantillon d'enregistrement JFR de demo \ jfc \ Java2D \ Java2Demo.jar
dans le fichier zip
--wldf.jfr: [Exemple MedRec de WebLogic](http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/wls/12c/12_2_1/02-34-004-DeploySampleApplication/deploysampleapplication.html# Échantillon d'enregistrement JFR dans la section 4)Exécutez $ {JAVA_HOME} \ bin \ jmc.exe
Sélectionnez java2d_demo.jfr dans File-> Open File ... et ouvrez-le. Comme ci-dessous Si vous pouvez voir l'écran, c'est OK.
Enregistrons en fait en utilisant Java2Demo.jar inclus dans Java Demos and Samples.
Exécutez le fichier Java2Demo.jar comme suit
SET JDK_HOME=<Chemin JDK>
SET PRG=D:\A_Dev\Java\jdk-8u101-windows-x64-demos\jdk1.8.0_101\demo\jfc\Java2D\Java2Demo.jar
SET JVM=-Xmx32m -Xms16m ← Pour générer fréquemment des GC. Non requis
SET JFR=-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
%JDK_HOME%\bin\java %JVM% %JFR% -jar %PRG%
Cliquez ici pour l'image d'écran de Java2Demo.jar. Si vous souhaitez mettre une charge, sélectionnez l'onglet "Transforms" et réglez le délai Anim sur le côté droit de l'écran court.
Lorsque vous démarrez jmc.exe, l'écran suivant s'affiche. Vous devriez voir le processus Java2Demo.jar sur la gauche. Le deuxième processus "Le JVM Running Mission Control" sur la gauche est le propre processus de jmc.
Cliquez avec le bouton droit de la souris sur la partie du processus et sélectionnez "Démarrer l'enregistrement de vol ...".
À partir de l'écran «Démarrer l'enregistrement de vol» ci-dessous, réglez la durée d'enregistrement sur «1 min» et le paramètre d'événement sur «Profilage - sur le serveur». Cliquez sur le bouton "Terminer" pour démarrer l'enregistrement.
La fenêtre contextuelle suivante apparaît et l'enregistrement démarre. En attendant 1 minute, jouez avec l'application Java2Demo.jar (avec ou sans charge).
Après 1 minute, le fichier .jfr qui a été enregistré automatiquement devrait démarrer.
Vous pouvez voir les valeurs moyennes et maximales de «utilisation du tas», «utilisation du processeur» et «temps de pause GC» pendant 1 minute enregistrées comme suit.
Sélectionnez l'onglet principal «Mémoire» sur la gauche et sélectionnez le sous-onglet «Garbage Collection». On peut voir que GC se produit fréquemment comme indiqué ci-dessous.
Sélectionnez l'onglet principal «Code» sur la gauche et sélectionnez le sous-onglet «Méthodes chaudes».
Vous pouvez voir que java.util.HashMap.put
,java.awt.TexturePaintContext ...
a été appelé le plus fréquemment pendant la minute d'enregistrement.
La composition globale de l'écran se compose d'un onglet principal sur le côté gauche et d'un sous-onglet pour chaque onglet principal. La configuration de l'écran pour chaque onglet principal est la suivante (* L'onglet principal WebLogic dans la capture d'écran est ce que vous voyez si le plugin pour WebLogic est installé)
I/O
(* Ci-dessous, les noms des onglets sont écrits en anglais. La plupart des manuels et références étant en anglais, il est plus facile de s'y habituer avec des noms anglais.)
No | Main Tab | Sub Tab | La description |
---|---|---|---|
1_1 | General | Overview | Informations de base telles que l'utilisation maximale du tas, l'utilisation totale du processeur et le temps de pause du GC |
1_2 | JVM Information | Informations JVM | |
1_3 | System Properties | Toutes les propriétés système définies au niveau du système d'exploitation | |
1_4 | Recording | Informations au moment de l'enregistrement JFR (quel événement a été activé) | |
2_1 | Memory | Overview | Informations générales sur l'utilisation de la mémoire et statistiques sur le garbage collection |
2_2 | Garbage Collections | Informations sur l'utilisation de la mémoire au fil du temps et tous les garbage collection | |
2_3 | GC Times | Informations sur le temps qu'il a fallu pour exécuter le GC et combien de temps l'application s'est complètement interrompue en raison du GC | |
2_4 | GC Configuration | Informations sur la configuration du GC | |
2_5 | Allocations | Toutes les allocations de mémoire effectuées.* TLAB (Thread Local Area Buffer) -Une petite zone mémoire à laquelle de nouveaux objets sont alloués | |
2_6 | Object Statistics | Cours avec live set | |
3_1 | Code | Overview | Affiche les packages et les classes qui ont passé le plus de temps d'exécution |
3_2 | Hot Methods | Méthode la plus échantillonnée | |
3_3 | Call Tree | Afficher les threads de méthode à chaud dans l'ordre inverse | |
3_4 | Exceptions | Afficher l'exception levée | |
3_5 | Compilations | Affiche les méthodes compilées lorsque l'application était en cours d'exécution | |
3_6 | Class Loading | Affiche le nombre de classes chargées au fil du temps, les classes réellement chargées et les classes déchargées | |
4_1 | Thread | Overview | Changements dans l'utilisation du processeur et le nombre de threads au fil du temps |
4_2 | Hot Threads | Affiche les threads qui effectuent la plupart de l'exécution du code | |
4_3 | Contention | Verrouiller les informations de conflit | |
4_4 | Latencies | Invocation de sleep ou wait, lecture depuis socket, fichier I/Afficher les autres causes de temps d'attente, comme attendre O | |
4_5 | Thread Dumps | Affiche les vidages de thread périodiques qui peuvent être déclenchés dans l'enregistrement | |
4_6 | Lock Instances | Affiche l'instance exacte de l'objet le plus en attente de synchronisation | |
5_1 | I/O | Overview | |
5_2 | File Reads | File I/O lu | |
5_3 | File Writes | File I/O écrire | |
5_4 | Socket Reads | Network I/O lu | |
5_5 | Socket Writes | Network I/O écrire | |
6_1 | System | Overview | CPU, Memory,Informations sur le système d'exploitation |
6_2 | Process | Informations sur le processus du système au moment de l'enregistrement | |
6_3 | Environment | Informations sur les variables d'environnement système au moment de l'enregistrement | |
7_1 | Event | Overview | |
7_2 | Log | ||
7_3 | Graph | ||
7_4 | Threads | ||
7_5 | Stack Traces | ||
7_6 | Histogram |
Recommended Posts