第四章:虚拟机性能监控与故障处理工具
JDK的命令行工具
jps:虚拟机进程状况工具
jps:JVM Process Status Tool
主要功能是列出正在运行的虚拟机进程。显示主类函数名称即虚拟机唯一ID
jps [options] [hostid]
jstat:虚拟机统计信息监控工具
jstat用于监控虚拟机各种运行状态信息的命令行工具。可以显示本地或者远程虚拟机进程中的类加载,内存,垃圾手机,JIT编译等运行数据。
jstat [options vmid [interval[s|ms] [count]]]
主要选项:
选项 | 作用 |
---|---|
-class | 监视类装载,卸载数量,空间及时间等 |
-gc | 监视Java堆状况,包括Eden区,两个survivor区,老年代,永久代,GC时间合计 |
-gccapacity | 基本与-gc一致,但是输出主要关注Java堆各个区域使用到的最大,最小空间 |
-gcutil | 输出主要关注已使用空间占总空间的百分比 |
D:\Develop\Java\jdk1.6.0_21\bin>jstat -gcutil 2764
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 6.20 41.42 47.20 16 0.105 3 0.472 0.577
s0,s1:survivor区
E:Eden
O(Old):老年代
P(Permanent):永久代
YGC:yong gc新生代gc
FGC:full gc
FGCT:full gc time
GCT:gc time
jinfo:java配置信息工具
作用是实时查看和调整虚拟机各项参数
jmap:Java内存映像工具
jmap 命令用于生成堆转储快照,获取dump文件。
主要选项:
选项 | 作用 |
---|---|
-dump | 生成Java堆转储快照 |
-heap | 显示Java堆的详细信息,如使用哪种回收器,参数配置,分代状况等 |
-histo | 显示堆中的对象统计信息,包括类,实例数量,合计容量 |
-permstat | 显示永久代内存状况 |
-F | 强制生成dump快照 |
jmap -dump:format=b,file=ecplise.bin 3500 // 生成一个快照
jhat:虚拟机堆转储快照分析工具
一个分析工具,一般不用
jstack:Java堆栈跟踪工具
jstack命令用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合。主要目的是定位线程出现长时间停顿的原因,如线程死锁,死循环等等。
jstack [options] vmid
主要选项:
选项 | 作用 |
---|---|
-F | 当正常输出的请求不被响应时,强制输出线程堆栈 |
-l | 除堆栈外,显示关于锁的附加信息 |
-m | 如果调用本地方法的话,可以显示c/c++的堆栈 |
jstack -l 3500