JVM 的 GC 的日志是以替换的方式 (>) 写入的, 而不是追加(>>), 如果下次写入到同一个文件中的话, 以前的 GC 内容会被清空. 这导致我们重启了 JAVA 服务后, 历史的 GC 日志将会丢失.
- -XX:+PrintGC
- -XX:+PrintGCDetails
- -XX:+PrintGCTimeStamps
- -Xloggc:filename
- Example
此种写法, 会导致 JAVA 服务重启后, GC 日志丢失
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/data0/logs/gc.log
在这里 GC 日志支持 %p 和 %t 两个参数:
%p 将会被替换为对应的进程 PID
%t 将会被替代为时间字符串, 格式为: YYYY-MM-DD_HH-MM-SS
此种写法, 不管怎么重启, GC 历史日志将不会丢失
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data0/logs/gc-%t.log"
来源: http://www.bubuko.com/infodetail-2605323.html