Wie kann die Ausgabe der ausführlichen Garbage Collection in eine Datei umgeleitet werden?

Lesezeit: 3 Minuten

Benutzer-Avatar
djangofan

Wie leite ich die Ausgabe der ausführlichen Garbage Collection in eine Datei um? Die Website von Sun zeigt ein Beispiel für Unix, aber es funktioniert nicht für Windows.

Benutzer-Avatar
Michael myers

Aus der Ausgabe von java -X:

    -Xloggc:<file>    log GC status to a file with time stamps

Dokumentiert hier:

-Xloggc:Dateiname

Legt die Datei fest, in die ausführliche GC-Ereignisinformationen zur Protokollierung umgeleitet werden sollen. Die in diese Datei geschriebenen Informationen ähneln der Ausgabe von -verbose:gc mit der verstrichenen Zeit seit dem ersten GC-Ereignis vor jedem protokollierten Ereignis. Das -Xloggc Option überschreibt -verbose:gc wenn beide gleich gegeben sind java Befehl.

Beispiel:

    -Xloggc:garbage-collection.log

Die Ausgabe sieht also etwa so aus:

0.590: [GC 896K->278K(5056K), 0.0096650 secs]
0.906: [GC 1174K->774K(5056K), 0.0106856 secs]
1.320: [GC 1670K->1009K(5056K), 0.0101132 secs]
1.459: [GC 1902K->1055K(5056K), 0.0030196 secs]
1.600: [GC 1951K->1161K(5056K), 0.0032375 secs]
1.686: [GC 1805K->1238K(5056K), 0.0034732 secs]
1.690: [Full GC 1238K->1238K(5056K), 0.0631661 secs]
1.874: [GC 62133K->61257K(65060K), 0.0014464 secs]

  • java –Xloggc:firstgen.log -Xloggc:secondgen.log scheint übrigens nicht zu funktionieren.

    – Djangofan

    21. Juli 2009 um 21:31 Uhr

  • Außerdem erhöht dies nicht die Leistung, wie ich erwartet hatte. Nach Verwendung dieser Argumente gibt es keine weiteren Details: -Xloggc:gc.log -XX:-PrintGCDetails

    – Djangofan

    21. Juli 2009 um 21:39 Uhr

  • “-XX:+PrintGCDetails” scheint mit -Xloggc zu funktionieren. Ich weiß nicht, warum die Sun-Seite ein – anstelle eines + hat.

    – Michael myers

    21. Juli 2009 um 21:47 Uhr


  • das hat funktioniert. Danke! Jetzt verwende ich diese Optionen: set JAVA_OPTS=%JAVA_OPTS% -Xloggc:logs\gc.log -XX:+PrintGCDetails -XX:MaxPermSize=128m

    – Djangofan

    23. Juli 2009 um 19:57 Uhr

Wenn Sie die Ausgabe zusätzlich in eine separate Datei umleiten möchten, können Sie Folgendes tun:

Auf einen Sun-JVM:

-Xloggc:C:\whereever\jvm.log -verbose:gc -XX:+PrintGCDateStamps

EIN ein IBM-JVM:

-Xverbosegclog:C:\whereever\jvm.log 

  • Wenn Sie -Xloggc verwenden, brauchen Sie -verbose:gc nicht.

    – Mirko Ebert

    25. August 2014 um 13:24 Uhr

Java 9 und Unified JVM-Protokollierung

JEP158 führt ein gemeinsames Protokollierungssystem für alle Komponenten der JVM ein, das die Funktionsweise der Protokollierung mit GC ändern (und meiner Meinung nach vereinfachen wird). JEP 158 fügte eine neue Befehlszeilenoption hinzu, um die Protokollierung von allen Komponenten der JVM zu steuern:

-Xlog

Zum Beispiel die folgende Option:

-Xlog:gc

protokolliert Nachrichten, die mit gekennzeichnet sind gc Tag verwenden info Ebene zu stdout. Oder dieses:

-Xlog:gc=debug:file=gc.txt:none

würde mit getaggte Nachrichten protokollieren gc Tag verwenden debug Ebene in eine Datei namens gc.txt ohne Verzierungen. Für eine detailliertere Diskussion können Sie die Beispiele in der auschecken JEP Seite.

  • Mit JDK 16 bekommt man sogar eine Warnung, wenn man das alte verwendet -Xloggc Anstatt von -Xlog:gc:...

    – Martin-g

    24. Juli 2020 um 7:07 Uhr

  • Wie kann ich das Protokoll an eine vorhandene Datei anhängen?

    – Diego Marin Santos

    31. August 2021 um 9:55 Uhr


Benutzer-Avatar
18446744073709551615

Um die obigen Antworten zu ergänzen, gibt es einen guten Artikel: Nützliche JVM-Flags – Teil 8 (GC-Protokollierung) von Patrick Peschlow.

Ein kurzer Auszug:

Die Flagge -XX:+PrintGC (oder das Pseudonym -verbose:gc) aktiviert den „einfachen“ GC-Logging-Modus

Standardmäßig wird das GC-Protokoll nach stdout geschrieben. Mit -Xloggc:<file> wir können stattdessen eine Ausgabedatei angeben. Beachten Sie, dass dieses Flag implizit gesetzt ist -XX:+PrintGC und -XX:+PrintGCTimeStamps auch.

Wenn wir verwenden -XX:+PrintGCDetails Anstatt von -XX:+PrintGCaktivieren wir den „detaillierten“ GC-Logging-Modus, der sich je nach verwendetem GC-Algorithmus unterscheidet.

Mit -XX:+PrintGCTimeStamps Jeder Zeile wird ein Zeitstempel hinzugefügt, der die vergangene Zeit in Sekunden seit dem Start der JVM widerspiegelt.

Wenn wir angeben -XX:+PrintGCDateStamps Jede Zeile beginnt mit dem absoluten Datum und der Uhrzeit.

1180300cookie-checkWie kann die Ausgabe der ausführlichen Garbage Collection in eine Datei umgeleitet werden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy