[JAVA] Verwendung von GC Viewer

Ich habe GC Viewer verwendet, um das GC-Protokoll von JVM nach langer Zeit zu überprüfen, daher werde ich eine Notiz hinterlassen.

Umgebung

herunterladen

Klicken Sie auf den Link für die neueste Version von "download | download mac version" auf der folgenden Seite, um sie herunterzuladen. https://github.com/chewiebug/GCViewer/wiki/Changelog

Unter Windows wird die JAR-Datei heruntergeladen. Legen Sie sie daher in einem beliebigen Ordner ab.

Anlaufen

  1. Doppelklicken Sie auf das gcviewer-Glas
    021.PNG
    → Der folgende Bildschirm wird angezeigt 002.png
  2. Ziehen Sie die GC-Protokolltextdatei per Drag & Drop in das Fenster
    → Der folgende Bildschirm wird angezeigt 020.png

Ändern Sie die Anzeige

  1. Aktivieren Sie Menü> Ansicht> Datenfenster
    → Das Datenfeld rechts verschwindet und wird breiter 004.png
  2. Klicken Sie mit der rechten Maustaste auf die Zeitspalte> Startzeit des Protokolls prüfen
    → Die Zeitspalte wird als Zeit angezeigt (wenn das GC-Protokoll einen Zeitstempel enthält) 005.png
  3. Überprüfen Sie den Gesamthaufen
    → Die Gesamtgröße des Heapspeichers wird rot angezeigt Hier werden -Xms (Startgröße) und -Xmx (maximale Größe) auf denselben Wert gesetzt, sodass die gesamte Heap-Größe in einer geraden Linie verläuft. 006.png
  4. Deaktivieren Sie Total Heap und aktivieren Sie die Option Tenured Generation, Young Generation
    → Die Größe der jungen Generation wird in Gelb und die Größe der Tenured-Generation (alte Generation) in Lila angezeigt. Normalerweise junge Generation + feste Generation = Gesamthaufen 007.png
  5. Überprüfen Sie den gebrauchten Tenured Heap, den gebrauchten jungen Heap
    → Die Heap-Nutzung in jeder Generation kann als Linie angesehen werden. Die vertikale Linie zeigt an, dass der Speicher vom GC freigegeben wurde. 008.png
  6. Passen Sie das Verhältnis im Auswahlfeld oben so an, dass der Anfang / das Ende des GC-Protokolls in das gesamte Fenster passt (★ wichtig).
    Wenn Sie dies nicht tun, denken Sie möglicherweise, dass es kein Problem gibt, nur einen Teil des Bereichs zu überprüfen. Dieses Mal habe ich das Verhältnis zu diesem Zeitpunkt angepasst, aber es ist besser, die Untersuchung zu starten, nachdem es möglich ist, das Ganze so schnell wie möglich zu sehen.
    Was Sie aus der Grafik sehen können
  1. Überprüfen Sie den gebrauchten Heap
    → Bisher wurden die junge Generation und die Tenured-Generation getrennt angezeigt. Jetzt wird die Summe aus Young-Generation und Tenured-Generation (= Heap-Nutzung) in Blau angezeigt. 010.png
  2. Überprüfen Sie die vollständigen GC-Linien
    → Full GC wird als schwarze Linie sichtbar 011.png

Überprüfen Sie den Standpunkt

  1. Ist die Heap-Nutzung der Young-Generation nach Young GC auf den Grund gefallen?
  2. Ist die Heap-Nutzung der Tenured-Generation nach Full GC auf den Grund gefallen?

Eigentlich weiß ich nicht wirklich, wie man GC-Protokolle auswertet. In dieser Grafik nimmt die Anzahl der Tenured-Generationen zu. Sollte sie jedoch im nächsten vollständigen GC nach unten freigegeben werden?

Recommended Posts

Verwendung von GC Viewer
Verwendung von Map
Wie benutzt man rbenv?
Verwendung von fields_for
Verwendung von java.util.logging
Verwendung der Karte
Verwendung von collection_select
Wie benutzt man Twitter4J
Wie benutzt man active_hash! !!
Verwendung von MapStruct
Verwendung von TreeSet
[Verwendung des Etiketts]
Wie man Identität benutzt
Wie man Hash benutzt
Verwendung von Dozer.mapper
Wie benutzt man Gradle?
Verwendung von org.immutables
Verwendung von java.util.stream.Collector
Verwendung von VisualVM
Verwendung von Map
Verwendung der Ketten-API
[Java] Verwendung von Map
Verwendung der Warteschlange mit Priorität
[Rails] Verwendung von Enum
Verwendung von JUnit (Anfänger)
Verwendung von Ruby return
[Rails] Verwendung von Enum
Verwendung von @Builder (Lombok)
Verwendung der Java-Klasse
Wie man Big Decimal benutzt
[Java] Verwendung von removeAll ()
Verwendung von String [] args
Verwendung von Rails Join
Verwendung von Java Map
Ruby: Wie man Cookies benutzt
Verwendung von abhängigen :: zerstören
Verwendung von Apache POI
[Rails] Verwendung der Validierung
Verwendung von Java-Variablen
[Rails] So verwenden Sie authenticate_user!
Wie man Lombok jetzt benutzt
[Erstellen] Verwendung von JUnit
[Schienen] Verwendung von Scope
Lesen von Java Memory Management und GC Viewer
[Rails] Wie man Edelstein "devise" benutzt
Wie man Lombok im Frühling benutzt
Verwendung von StringBurrer und Arrays.toString.
Verwendung des Arrays (persönliches Memorandum)
Verwendung von HttpClient (Get) von Java
Verwendung des Bereichs (JSP & Servlet)
[Schienen] Verwendung von Geräten (Hinweis)
Verwendung der Methode form_with