
主要介绍 jps、jstat、jinfo、jmap、jhat、jstack 等几个JDK命令行工具
用工具来分析数据,以此来获取结果。下面包含四个数据依据。
- 异常堆栈
- 运行日志
- GC日志
- 堆转储快照(heapdump/javacore文件)
- 线程快照(threaddump/hprof文件)
在JDK的bin目录下有很多监视虚拟机和故障处理的工具。文章将讲解多个关于JDK的命令行工具。
1. JPS(JVM Process Status Tool)
描述: 虚拟机进程状态管理工具;其他工具在使用时需要通过该工具来获取LVMID;
1.1 功能
列举正在运行的虚拟机进程; 进程本地虚拟机唯一ID(Local Virtaul Machine Identifer LVMID)
显示虚拟机执行主类(main()方法所在的类)的名称
1.2 参数
注: options (选项) ; 本文将 options 理解为工具的参数。
jps 命令格式: jps [ options ] [hostid]
| 参数 | 描述 |
|---|---|
| -l | 输出主类的全名,如果是执行的jar,则输出jar的路径 |
| -v | 输出JVM启动时的JVM参数 |
当然常用参数还是 -l ,主要是为了获得ID值。
1.3 实例
启动项目之后、可以使用命令查询运行信息
C:\Program Files\Java\jdk1.8.0_141\bin>jps -l
10048 sun.tools.jps.Jps
6832 org.jetbrains.jps.cmdline.Launcher
976
7092 com.intellij.rt.execution.application.AppMain
4536 org/netbeans/Main
3484
2 Jstat (JVM Statistics Monitoring Tool)
2.1 描述:虚拟机统计信息监控工具
监视虚拟机各种运行状态信息的命令行工具;
它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形化界面,只提供纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。(jstat工具参数还是比较多,信息还是比较丰富)
2.2 命令格式
jstat [options] vmid [interval [s|ms] [count]] ] (远程命令格式略有不同)
jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]
2.3 主要工具参数
-gcnew 新生代
-gccause 与-gcutil相似,但是会输出上一次GC的原因
-gccause与-gcutil相似,但是会输出上一次GC的原因
| 参数 | 功能作用 |
|---|---|
| -class | 监视类装载、卸载数量,以及总空间和装载耗时等 |
| -gc | 监视堆中 eden、 survivor 、老年代、元空间等空间大小和已使用情况,GC次数、耗时等 |
| -gcmetacapacity | 元空间 |
| -gcutil | 与gc 类似,但是注重的是占比情况 |
| -printcompilation | 输出已经被JIT重新编译的方法 |
| -gcoldcapacity | 输出已经被JIT重新编译的方法 |
| -gcnew | 新生代 |
2.4 实验
通过实验来验证jstat相关参数。
2.4.1 实验一
使用-gc 命令; 为了能够更加直观,在程序中设置了VM相关参数; 然后运行、查看结果并分析。
2.4.2 jstat -gc 运行并查看结果
| 参数 | 解析 |
|---|---|
| S0C | surivor(s0)区域大小 |
| s1c | s1区大小 |
| S0U | S0的使用大小 |
| S1U | S1的使用大小 |
| EC | eden可以使用的大小 |
| EU | eden已经使用 |
| OC | 老年代可以使用的大小 |
| OU | 老年代已经使用的带下 |
| MC | 元空间可以使用的大小 |
| MU | 元空间已经使用的大小 |
| CCSC | 压缩类空间大小 |
| CCSU | 压缩类已经使用大小 |
| YGC | 年轻代垃圾回收次数 |
| YGCT | 年轻代垃圾回收总耗时 |
| FGC | 老年代垃圾回收次数 |
| FGCT | 老年代垃圾回收总耗时 |
| GCT | 垃圾回收消耗总时间 |
3 jinfo 工具
jinfo 工具, Java配置信息工具; 通过命令可以查看配置信息参数
参数格式: jinfo [option] ipd 在控制台输入 jinfo ,则会提示相关命令参数,可借助提示执行相关命令。
-flag to print the value of the named VM flag -flag [+|-] to enable or disable the named VM flag -flag = to set the named VM flag to the given value -flags to print VM flags -sysprops to print Java system properties to print both of the above
4 jmap (JVM Memory Map for Java)
4.1 描述
jmap(JVM Memory Map for java)命令用于生成堆转储快照; 当然还可以使用-XX:HeapDumpOnOutOfMemoryError 参数,可以让虚拟机在OOM异常之后自动生产dump文件。
4.2 功能点
- 可以获取dump文件,它还可以查询 finalize 执行队列
- java堆信息
- 空间使用率、当前使用的那种收集器等
4.3 jmap工具主要选项
| 选项 | 作用 |
|---|---|
–dump |
生成Java堆转储快照。 格式 -dump:[live,]format=b,file=< filename >,其中live子参数说明是否只dump出存活的对象 |
–finalizerinfo |
显示F-Queue中等待Finalizer线程执行finalize方法的对象 |
–heap |
显示java堆详细信息,如使用哪种收集器、参数配置、分代状况等 |
–histo |
显示堆中对象统计信息,包括类,实例数量、合计容量 |
–F |
当虚拟机进程对 -dump选项没有响应时,可使用这个选项强制生成dump快照 |


评论0