[JAVA] Comment utiliser GC Viewer
J'ai utilisé GC Viewer pour vérifier le journal GC de JVM après un long moment, donc je vais laisser une note.
environnement
- OS: Windows 8.1
- Java: java version "1.8.0_231"
- Gcviewer: gcviewer-1.36-SNAPSHOT.jar
Télécharger
Cliquez sur le lien pour la dernière version de «télécharger | télécharger la version mac» sur la page suivante pour télécharger.
https://github.com/chewiebug/GCViewer/wiki/Changelog
Dans le cas de Windows, le fichier jar sera téléchargé, alors placez-le dans n'importe quel dossier.
Commencez
- Double-cliquez sur le jar gcviewer
→ L'écran suivant s'affiche
- Faites glisser et déposez le fichier texte du journal GC dans la fenêtre
→ L'écran suivant apparaîtra
Changer l'affichage
- Cochez Menu> Affichage> Panneau de données
→ Le panneau de données à droite disparaît et s'élargit
- Cliquez avec le bouton droit autour de la colonne d'heure> Vérifier l'heure de début du journal
→ La colonne d'heure est affichée sous forme d'heure (lorsque le journal du CPG contient un horodatage)
- Vérifier le tas total
→ La taille totale du tas est affichée en rouge
Ici, -Xms (taille de départ) et -Xmx (taille maximale) sont définis sur la même valeur, donc la taille totale du tas est en ligne droite.
- Désactivez Total Heap et cochez la case Tenured Generation, Young Generation
→ La taille de la génération Jeune est affichée en jaune et la taille de la génération Titulaire (Ancienne génération) est affichée en violet.
Généralement jeune génération + génération permanente = tas total
- Vérifiez le tas utilisé, le tas jeune utilisé
→ L'utilisation du tas dans chaque génération peut être considérée comme une ligne. La ligne verticale indique que la mémoire a été libérée par le GC.
- Ajustez le rapport dans la boîte de sélection en haut de sorte que le début / la fin du journal GC tienne dans toute la fenêtre (★ important).
Si vous ne le faites pas, vous pouvez penser qu'il n'y a pas de problème à ne vérifier qu'une partie de la plage. Cette fois, j'ai ajusté le ratio à ce moment, mais il vaut mieux commencer l'enquête après avoir permis de voir l'ensemble le plus tôt possible.
Ce que vous pouvez voir sur le graphique
- Les jeunes GC se produisent assez souvent. Yong GC libère presque la jeune génération (la ligne grise tombe sous la zone jaune)
- Le GC complet de génération titulaire s'est produit deux fois. Les deux sont tombés presque au fond, ils ont donc été relâchés. Après cela, je crains que la mémoire de la zone d'occupation augmente. Le GC complet se reproduira probablement après cela, mais s'il est relâché vers le bas à ce moment-là, il n'y a pas de problème (aucune confiance)
- Vérifier le tas utilisé
→ Jusqu'à présent, la jeune génération et la génération avec permanence étaient affichées séparément, mais maintenant le total de la jeune génération et de la génération avec permanence (= utilisation du tas) peut être vu en bleu.
- Vérifier les lignes GC complètes
→ Le GC complet devient visible comme une ligne noire
Vérifier le point de vue
- L'utilisation du tas de la jeune génération a-t-elle chuté au fond après Young GC?
- L'utilisation du segment de mémoire de la génération Tenured a-t-elle chuté au bas après Full GC?
En fait, je ne sais pas vraiment comment évaluer les journaux GC.
Dans ce graphique, le nombre de générations titulaires augmente, mais devrait-il être publié au bas du prochain GC complet?