普通情况下,GC日志文件内容会不断积累,进程重启后日志文件会被覆盖。为了防止GC日志文件过大,我们可以设置多个日志文件滚动输出。当最后一个文件满了以后,覆盖第一个文件。
如果不用滚动输出的话,可以设置每天一个日志文件。
测试代码
package com.quintin.jvm;
public class HelloGC {
public static void main(String[] args) {
for(int i=0; i<10000; i++) {
byte[] b = new byte[1024 * 1024];
}
System.out.println("结束");
}
}
设置参数
java -Xmn10M -Xms40M -Xmx50M
-Xloggc:/Users/quintin/Downloads/logs/gc-%t.log
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=5
-XX:GCLogFileSize=10k
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCCause com.quintin.jvm.HelloGC
运行效果
.current后缀表示现在正在使用哪个日志文件
参数解释
-Xloggc:/Users/quintin/Downloads/logs/gc-%t.log 设置GC日志的路径,%t 会记录当前日期
-XX:+UseGCLogFileRotation 开启滚动日志
-XX:NumberOfGCLogFiles=5 设置GC日志的个数
-XX:GCLogFileSize=10k 设置GC日志文件多大时,写入下一个GC日志文件中
参考资料
https://www.bridgeli.cn/archives/505