Skip to content

Oracle Java SE (hotspot) GC Logfile rotation

Zufällig bin ich bei den Java Flags über die Option -XX:GCLogFileSize=x gestolpert. Da ich bei Oracle (im Gegensatz zur IBM JVM) einige Diagnosefunktionen, wie z.b. rollierende GC logfiles vermisste habe ich weiter gesucht, und den RFE 6941823 gefunden, der (für Java 7U2+) beschreibt, dass das Feature jetzt vorhanden ist, und (umständlich) mit 3 Optionen konfiguriert werden muss:
C:> java -XX:+PrintFlagsFinal -version | find "GCLog"
    uintx GCLogFileSize                              = 0               {product}
    uintx NumberOfGCLogFiles                         = 0               {product}
     bool UseGCLogFileRotation                       = false           {product}
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
Ich würde das ganze immer zusammen mit der Details und Datestamp Option verwenden:
java  -Xloggc:log/app.vgc
      -XX:GCLogFileSize=10M -XX:NumberOfGCLogFiles=10 -XX:+UseGCLogFileRotation
      -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:-PrintGCTimeStamps
Bei IBM kann man das übrigens dank kompaktem Syntax und Variablenexpansion deutlich besser machen:
$ java -Xverbosegclog:app.%Y%m%d.%H%M%S.%pid.vgc,10,10000
Und dazu liefert IBM sogar noch ein Handbuch...