JVM日志配置

GC日志参数

设定日志参数(找到tomcat的解压目录,进入bin文件夹,修改catalina.bat/sh),spring boot项目 jar 启动直接命令启动

set "JAVA_OPTS=
-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCCause 
-XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps
-XX:+UseGCLogFileRotation 
-XX:NumberOfGCLogFiles=5 
-XX:GCLogFileSize=20M  
-Xloggc:D:\gc-%t.log"

开启日志

参数介绍
-XX:+PrintGC开启GC日志打印
-XX:+PrintGCDetails打印GC日志详细信息
-XX:+PrintGCCause打印GC回收原因
-XX:+PrintGCDateStamps打印GC发生日期戳
-XX:+PrintGCTimeStamps打印GC发生时间戳
-Xloggc:D:\gc-%t.log设置日志文件保存目录(如果不设置默认会打印到前台输出)

日志生产方式

如果不设置滚动日志通过%t.log每天生成一个jvm的GC文件但需要定时清理

参数介绍
-XX:+UseGCLogFileRotation开启滚动生成日志
-XX:NumberOfGCLogFiles=5滚动GC日志文件数,默认: 0 不滚动
-XX:GCLogFileSize=20M每个GC日志文件分割时的大小

分析日志文件

每种垃圾回收器的日志格式是不同的!

3.448: [GC (Metadata GC Threshold) [PSYoungGen: 10749K->5119K(71680K)] 17251K->12177K(159232K), 0.0103527 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 

3.459: [Full GC (Metadata GC Threshold) [PSYoungGen: 5119K->0K(71680K)] [ParOldGen: 7058K->6474K(50688K)] 12177K->6474K(122368K), [Metaspace: 20292K->20292K(1067008K)], 0.0454318 secs] [Times: user=0.09 sys=0.00, real=0.05 secs] 

3.448:

GC 指的是YGC 本地回收年轻代

(Metadata GC Threshold) 回收原因

[PSYoungGen: 10749K->5119K(71680K)] : 新生代垃圾收集器简称: 回收前新生代大小 -> 回收后新生代大小(新生代总大小)

17251K->12177K(159232K) : 堆空间回收前大小 -> 堆空间回收后大小 (堆空间总大小)

0.0103527 secs : 本次垃圾收集占用总时间

[Times: user=0.02 sys=0.00, real=0.01 secs] : 本地垃圾收集 用户态占用时间,内核态占用时间,总时间

3.459:

Full GC: 本次回收新生代老年代都会进行垃圾回收

(Metadata GC Threshold) 回收原因

[PSYoungGen: 5119K->0K(71680K)] : 新生代垃圾收集器简称: 回收前新生代大小 -> 回收后新生代大小(新生代总大小)

[ParOldGen: 7058K->6474K(50688K)] : 老年代垃圾收集器简称: 回收前老年代大小 -> 回收后老年代大小(老年代总大小)

12177K->6474K(122368K) : 堆空间回收前大小 -> 堆空间回收后大小 (堆空间总大小)

[Metaspace: 20292K->20292K(1067008K)] : 方法区/元空间 元空间:元空间回收前大小 -> 元空间回收后大小 (元空间总大小)

0.0454318 secs : 本次垃圾收集占用总时间

[Times: user=0.09 sys=0.00, real=0.05 secs] : 本地垃圾收集 用户态占用时间,内核态占用时间,总时间


版权声明:本文为qq_42483257原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。