Aus der Ausgabe von java -X
:
-Xloggc: <Datei> protokolliert den GC-Status in einer Datei mit Zeitstempeln
Dokumentierte 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 Zeit, die seit dem ersten GC-Ereignis vor jedem protokollierten Ereignis vergangen ist. Die -Xloggc
Option wird überschrieben, -verbose:gc
wenn beide mit demselben java
Befehl angegeben werden.
Beispiel:
-Xloggc: garbage-collection.log
Die Ausgabe sieht also ungefähr so aus:
0,590: [GC 896 K → 278 K (5056 K), 0,0096650 Sekunden]
0,906: [GC 1174K-> 774K (5056K), 0,0106856 Sekunden]
1,320: [GC 1670 K → 1009 K (5056 K), 0,0101132 Sekunden]
1,459: [GC 1902K-> 1055K (5056K), 0,0030196 Sekunden]
1,600: [GC 1951K → 1161 K (5056 K), 0,0032375 Sekunden]
1,686: [GC 1805 K → 1238 K (5056 K), 0,0034732 Sekunden]
1,690: [Full GC 1238K-> 1238K (5056K), 0,0631661 Sekunden]
1,874: [GC 62133K-> 61257K (65060K), 0,0014464 Sekunden]
Wenn Sie die Ausgabe zusätzlich in eine separate Datei leiten möchten, haben Sie folgende Möglichkeiten:
Auf einer Sun JVM:
AUF einer IBM JVM:
quelle
Java 9 & Unified JVM-Protokollierung
JEP 158 führt ein gemeinsames Protokollierungssystem für alle Komponenten der JVM ein, das die Funktionsweise der Protokollierung mit GC ändert (und IMO vereinfacht). JEP 158 hat eine neue Befehlszeilenoption hinzugefügt, um die Protokollierung aller Komponenten der JVM zu steuern:
Zum Beispiel die folgende Option:
protokolliert mit
gc
tag getaggte Nachrichten mitinfo
level tostdout
. Oder dieses:würde Nachrichten, die mit
gc
tag getaggt sind, mitdebug
level in einer Datei protokollieren, diegc.txt
ohne Dekorationen aufgerufen wird . Weitere Informationen finden Sie in den Beispielen auf der JEP- Seite.quelle
-Xloggc
anstelle von-Xlog:gc:...
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:
Das Flag
-XX:+PrintGC
(oder der Alias-verbose:gc
) aktiviert den „einfachen“ GC-ProtokollierungsmodusStandardmäßig wird das GC-Protokoll in stdout geschrieben. Mit können
-Xloggc:<file>
wir stattdessen eine Ausgabedatei angeben. Beachten Sie, dass dieses Flag implizit auch-XX:+PrintGC
und setzt-XX:+PrintGCTimeStamps
.Wenn wir
-XX:+PrintGCDetails
stattdessen verwenden-XX:+PrintGC
, aktivieren wir den "detaillierten" GC-Protokollierungsmodus, der sich je nach verwendetem GC-Algorithmus unterscheidet.Mit
-XX:+PrintGCTimeStamps
einem Zeitstempel, der die in Sekunden seit dem JVM-Start verstrichene Echtzeit widerspiegelt, wird jeder Zeile hinzugefügt.Wenn wir angeben
-XX:+PrintGCDateStamps
, beginnt jede Zeile mit dem absoluten Datum und der absoluten Uhrzeit.quelle