JVM常用工具
Posted 小杨Vita
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM常用工具相关的知识,希望对你有一定的参考价值。
常用的jvm工具都在JDK安装目录的bin目录中,这儿只简要介绍下。
jps
它是使用频率最高的一条命令,用于显示进程的本地虚拟机唯一ID(LVMID)。
命令格式:
jps [option] [hostid]
说明:hostid
可填远程ip,不填默认为本机。
常用选项:
选项 | 作用 |
---|---|
-m | 启动时传递给主类main的参数 |
-l | 主类的全限定名,或jar包路径 |
-v | 展示JVM启动参数 |
jstat
用于监视虚拟机各种运行状态信息的工具,在没有GUI工具时的首选!
命令格式:
jstat [option vmid [interval [s|ms] [count]] ]
说明:单位默认ms,无interval时值输出一行;vmid可为远程地址,格式为vmid@hostname[:port]
常用选项:
选项 | 作用 |
---|---|
-class | 监视类装载、卸载耗费的时间 |
-gc | 监视java堆的详细情况,各个区的大小和已用空间 |
-gccapacity | 与-gc类似,但主要关注各个区域的最大最小空间 |
-gcutil | 与-gc类似,但主要关注各个区域已占用比例 |
-gccause | 除-gcutil外,还输出每次gc产生的原因 |
-t | 首行添加时间戳列(jvm启动至今时间) |
-hN | N为数字,每N行打印一次表头 |
jinfo
查看虚拟机各项参数,比jps -v
稍具体些。
命令格式:
jinfo [option] vmid
常用选项:
选项 | 作用 |
---|---|
-flags | JVM启动参数 |
-sysprops | java系统环境变量 |
啥也不写 | 同时展示上述两者 |
jmap
用于生成堆转储快照(dump文件)。效果和 -XX:+HeapDumpOnOutOfMemoryError
类似,后者加入JVM启动参数后当遇到OOM时便会产生dump文件,可事后分析堆运行情况。
命令格式:
jmap [option] vmid
常用选项:
选项 | 作用 |
---|---|
-dump:<dump-option> | 生成堆dump快照,选项有:live 仅保存存活对象,不写则为全部;format=b 二进制格式保存;file=<path> 文件路径。例:-dump:live,format=b,file=heap.bin |
-heap | 显示java堆详细情况,仅在linux下有效 |
-F | -dump无效时强制生成dump快照,仅在linux下有效 |
jhat
分析堆转储快照,与jmap搭配使用。分析后将启动http服务器,通过http://localhost:7000/
即可查看分析结果,结果比较简陋,建议拷贝到本地使用JConsole/VisualVM等图形化工具来分析。
命令格式:
jhat <dump-file-path>
jstack
既然可以看堆快照,那肯定也可以看线程快照啦,jstack将展示JVM每一条线程正在执行方法的堆栈集合,用于分析线程死锁、长时间等待的原因。
命令格式:
jstack [option] vmid
常用选项:
选项 | 作用 |
---|---|
-l | 显示关于锁的附加信息 |
-F | 无法输出时强制输出 |
JConsole/VisualVM
当你用了图形化工具后,上面的那些命令就成为可选选项了。使用方式都很简单,网上有大把的教程。推荐使用VisualVM,插件丰富。
以上是关于JVM常用工具的主要内容,如果未能解决你的问题,请参考以下文章