-Xss256k
-Djava.net.preferIPv4Stack=true
-Dfile.encoding=UTF-8
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+DisableExplicitGC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:+PrintClassHistogram
-XX:+PrintClassHistogramBeforeFullGC
-XX:+PrintTenuringDistribution
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintPromotionFailure
-XX:PrintFLSStatistics=1
-verbose:gc
-XX:GCLogFileSize=64m
-XX:NumberOfGCLogFiles=2
-XX:+UseGCLogFileRotation
-Xloggc:./logs/gc.log
Die obigen sind die vollständige Liste der JAVA_OPTS, die ich für meine Anwendung überlasse. Das Problem besteht darin, dass die Datei gc.log manchmal nicht erstellt wird, wenn das Protokollverzeichnis zum Zeitpunkt des Starts der Anwendung nicht vorhanden ist. Aber gc.log wird immer erstellt, wenn ich sicherstelle, dass das Protokollverzeichnis zu dem Zeitpunkt existiert, zu dem die Anwendung gestartet wird.Xloggc erstellt keine Protokolldatei, wenn der Pfad zum ersten Mal nicht existiert
Also habe ich recht, wenn ich davon ausgehe, dass Xloggc vor dem Erstellen des logs-Verzeichnisses, wenn ein GC auftritt, sicher abstürzt? Gibt es eine andere Problemumgehung als das manuelle Vorerstellen des Protokollverzeichnisses?