在 CentOS 上查看 Java 应用的 GC(垃圾回收)日志,通常分为 “是否已经开启 GC 日志” 和 “如何查看/分析 GC 日志” 两部分。下面按常见场景说明。
ps -ef | grep java
关注类似参数:
-Xloggc:/path/to/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xlog:gc*:file=/path/to/gc.log:time
如果没有这些参数,说明 GC 日志未开启。
java -Xms512m -Xmx512m \
-XX:+PrintGCDetails \
-XX:+PrintGCDateStamps \
-XX:+UseGCLogFileRotation \
-XX:NumberOfGCLogFiles=5 \
-XX:GCLogFileSize=10M \
-Xloggc:/var/log/java/app-gc.log \
-jar app.jar
java -Xlog:gc*:file=/var/log/java/app-gc.log:time,level,tags:filecount=5,filesize=10M \
-jar app.jar
tail -f /var/log/java/app-gc.log
less /var/log/java/app-gc.log
2024-01-01T10:00:01.123+0800: 12.345: [GC (Allocation Failure)
[PSYoungGen: 123456K->12345K(234567K)] 234567K->123456K(456789K), 0.0456789 secs]
关键信息:
PSYoungGen:年轻代 GCFull GC:全量 GC0.045 secs:GC 耗时grep "Full GC" /var/log/java/app-gc.log | wc -l
jstat -gcutil <pid> 1000
示例输出:
S0 S1 E O M YGC YGCT FGC FGCT GCT
0.0 45.3 67.8 80.1 95.2 120 3.45 5 1.23 4.68
如果你愿意,可以告诉我:
我可以给你更精确的命令。