1. 主要命令监控工具用途
| 名称 |
主要作用 |
| jps |
JVM Process Status Tool, 显示指定系统内所有HotSpot虚拟机进程 |
| jstat |
JVM Statistics Monitoring Tool,用于手机HotSpot虚拟机各方面的运行数据 |
| jinfo |
Configuration Info for Java,显示虚拟机配置信息 |
| jmap |
Memory Map for Java,生成虚拟机的内存转储快照(heapdump文件) |
| jhat |
JVM Heap Dump Browser, 用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果 |
| jstack |
Stack Trace for Java, 显示虚拟机的线程快照 |
1.1 jps 虚拟机进程状况工具
jps [options] [hostid]
| 选项 |
作用 |
| -q |
只输出LVMID,省略主类的名称 |
| -m |
输出虚拟机进程启动时传递给主类main()函数的参数 |
| -l |
输出主类的全名,如果进程执行的是jar包,输出jar路径 |
| -v |
输出虚拟机进程启动时JVM参数 |
1.2 jstat 虚拟机统计信息监控工具
jstat [options vmid [interval[s|ms]] [count]]
| 选项 |
作用 |
| -class |
监视类装载、卸载数量、总空间以及类装载所耗费的时间 |
| -gc |
监视Java堆状况,包括Eden区、两个survivor、老年代、永久代等的容量、已用空间、GC时间合计等信息 |
| -gccapacity |
监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间内 |
| -gcutil |
监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 |
| -gccause |
与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 |
| -gcnew |
监视新生代GC状况 |
| -gcnewcapacity |
监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间 |
| -gcold |
监视老年代GC状况 |
| -gcoldcapacity |
监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间 |
| -gcpermcapacity |
输出永久代使用到的最大、最小空间 |
| -compiler |
输出JIT编译器编译过的方法、耗时等信息 |
| -printcompilation |
输出已经被JIT编译的方法 |
1.3 jinfo Java配置信息工具
jinfo [option] pid
1.4 jmap Java内存映像工具
jmap [option] vmid
| 选项 |
作用 |
| -dump |
生成Java堆转储快照。格式为:-dump:[live,]format=b,file=,其中live子参数说明是否只dump出存活的对象 |
| -finalizerinfo |
显示在F-Queue中等待Finalizer线程执行finalize方法的对象,只在Linux/Solaris平台下有效 |
| -heap |
显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在Linux/Solaris平台下有效 |
| -histo |
显示堆中对象统计信息,包括类、实例数量、合计容量 |
| -permstat |
以ClassLoader为统计口径显示永久代内存状态。只在Linux/Solaris平台下有效 |
| -F |
当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。只在Linux/Solaris平台下有效 |
1.5 jhat 虚拟机堆转储快照分析工具
1.6 jstack Java堆栈跟踪工具
jstack [option] vmid
| 选项 |
作用 |
| -F |
当正常输出的请求不被响应时,强制输出线程堆栈 |
| -I |
除堆栈外,显示关于锁的附加信息 |
| -m |
如果调用到本地方法的话,可以显示C/C++的堆栈 |
2. JDK可视化工具
2.1 JConsole Java监控与管理控制台
2.2 VisualVm 多合一故障处理工具