可直接使用的例子:
-Xms2G -Xmx2G -Xlog:gc*=info,gc+heap=debug,gc+age=trace,safepoint:/logs/gc_%t.log:time,level,tags:filecount=``5``,filesize=20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/
参数 | 解释 |
---|---|
-Xms | 初始 Java 堆大小 |
-Xmx | 最大 Java 堆大小 |
-XX:+HeapDumpOnOutOfMemoryError | 堆内存溢出错误打印 |
-XX:HeapDumpPath | 堆内存溢出错误日志路径 |
-Xlog日志格式
-Xlog:${what}:${output}:${decorators}:${output-options}
如不配置, 则使用以下默认配置
-Xlog:all=warning:stdout:uptime,level,tags
格式说明:
占位符之间用英文冒号分隔, 占位符之内用英文逗号分隔
占位符 | 解释 |
---|---|
${what} | 包含标签还有日志级别, 英文逗号分隔 例子1: -Xlog:gc*=info 表示包含 gc 标签的所有日志,info 级别的都会输出 例子2: -Xlog:gc+age=debug 表示同时包含且仅包含 gc 和 age 这两个标签的,debug 级别的都会输出 |
${output} | 输出类型, 英文逗号分隔 例如: -Xlog:gc*:filename 或者 -Xlog:gc*:file=filename 表示将gc标签的日志输出到指定文件 |
${decorators} | 日志标记, 英文逗号分隔 例如: time,level,tags
|
${output-options} | 输出配置, 英文逗号分隔 例如: filecount=5,filesize=20M 表示保留5个文件,每个文件20M |
日志级别表
级别 | 解释 |
---|---|
off | 关闭 |
trace | 包含trace,debug,info,warning,error所有日志 |
debug | 包含debug,info,warning,error |
info | 默认级别,包含info,warning,error, 例如-Xlog:gc和-Xlog:gc=info是等价的 |
warning | 包含warning,error |
error | 仅包含error |
输出类型表
输出类型 | 解释 |
---|---|
stdout | 标准输出 |
stderr | 标准错误输出 |
file=filename | 输出到文件 |
日志标记表
标记 | 解释 |
---|---|
time 或者 t | 当前时间,ISO-8601格式 |
utctime 或者 utc | UTC时间 |
uptime 或者 u | 启动到现在经过的时间 |
uptimemillis 或者 um | 启动到现在的毫秒时间 |
uptimenanos 或者 un | 启动到现在的纳秒时间 |
hostname 或者 hn | 主机名称 |
pid 或者 p | 进程号 |
tid 或者 ti | 线程号 |
level 或者 l | 日志级别 |
tags 或者 tg | 日志标签 |
说明:
原先的-XX:+PrintGC -XX:+PrintGCDetails
等配置项在JDK9之后已失效, 详细查看以下官网地址
附录:
- jvm参数官网地址
- jvm参数配置例子
https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/tutorial-Xlog/html/index.html
日志效果实例
gc日志.png
网友评论