-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
以上是我为我的应用程序传递的 JAVA_OPTS 的完整列表。问题是如果在应用程序启动时日志目录不存在,则有时不会创建 gc.log 文件。但是如果我确保在应用程序启动时日志目录存在,则始终会创建 gc.log。
那么我是否正确假设如果发生 GC,在我的 log4j 框架创建日志目录之前,Xloggc 将安全失败?除了手动预先创建日志目录之外,还有其他解决方法吗?