jdk自带一些性能监控工具, 放在jdk目录下bin里面. 这里面的工具采用了java代码实现.
tools.jar中的类库不属于Java的标准api.
本文中的命令参数列表详见书本<深入理解Java虚拟机>.
jdk自带的性能监测工具主要分为两大类: 命令行工具和可视化工具
命令行工具
jps (JVM Process Status Tool) 虚拟机进程状况工具
显示指定系统内所有的HotSpot虚拟机进程. 此命令用来找出我们运行中的项目的PID, 是此后排错步骤中的首要步骤.
- 命令格式
jps [ options ] [ hostid ]
jstat (JVM Statistics Monitoring Tool) 虚拟机统计信息监视工具
用于收集HotSpot虚拟机各方面的运行数据
- 命令格式
jstat [ option vmid [ interval [s|ms] [count] ] ]
jinfo (Configuration Info for Java) java配置信息工具
显示虚拟机配置信息
- 命令格式
jinfo [ option ] pid
jmap (Memory Map for Java) java内存映像工具
生成虚拟机的内存转储快照(heapdump)文件
- 命令格式
jmap [ option ] vmid
jhat (JVM Heap Dump Browser) 虚拟机堆转储快照分析工具
分析heapdump文件, 建立一个HTTP/HTML服务器, 让用户可以再浏览器上查看分析结果. 主要搭配jmap来使用.
- 命令格式
jhat heapdump_location
jstack (Stack Trace for Java) java堆栈跟踪根据
显示虚拟机的线程快照, 主要用于定位线程出现长时间停顿的原因.
- 命令格式
jstack [ option ] vmid
可视化工具
JConsole( Java Monitoring and Management Console )
- 内存页相当于可视化的
jstat
命令
用于监视Java heap和永久代的变化趋势 - 线程页相当于可视化的
jstack
命令
遇到线程停顿的时候可以使用这个页面进行监控分析
常见线程停顿原因: 等待外部资源(数据库, 网络资源, 设备资源) , 死循环, 锁等待.
VisualVM( 多合一故障处理工具 )
此款性能监测工具功能非常强大, VisualVM可以做到 :
- 显示虚拟机进程及进程的配置和环境信息(jps jinfo)
- 监视应用程序的CPU, GC, 堆, 方法区及线程的信息(jstat jstack)
- dump及分析堆转储快照(jmap jhat)
- 方法级的程序运行性能分析, 找出被调用最多, 运行时间最长的方法.
- 离线程序快照 : 收集程序的运行时配置, 线程dump, 内存dump 等信息建立一个快照, 将快照发送给开发者处进行Bug反馈.
- 其它plugins的无限可能性...
网友评论