一、jps
JDK的bin目录下jps.exe工具。
作用是查询进程状况,和linux的ps指令类似,可以列举出进程、 执行主类的名称、进程编号。
jps 命令格式:
jps [ options ] [ hostid ]
jps执行样例:
二、jstat
jstat是用于监视虚拟机各种运行状态信息的命令行工具。
jstat可以显示进程中的类加载、内存、垃圾收集、即时编译等运行时数据。
jstat 命令格式:
jstat [ option vmid [ interval [ s | ms ] [ count ] ]
如果是远程虚拟机进程,则VMID的格式为:
[ protocol: ][ // ] lvmid [ @hostname [ :port ] /servername ]
参数说明:
interval - 代表查询的间隔
count - 代表查询的次数
jstat执行示例:
执行结果参数说明:
S0C - 第一个幸存区大小
S1C - 第二个幸存区大小
S0U - 第一个幸存区使用大小
S1U - 第二个幸存区使用大小
EC - Eden区大小
EU - Eden区使用大小
OC - 老年代大小
OU - 老年大使用大小
MC - 方法区大小
MU - 方法区使用大小
CCSC - 压缩类空间大小
CCSU - 压缩类空间使用大小
YGC - 年轻代回收次数
YGCT - 年轻代回收耗时
FGC - 老年代回收次数
FGCT - 老年代回收耗时
GCT - 垃圾回收总耗时
三、jinfo
jinfo是实时查看和调整虚拟机的工具。
与jps不同的是,使用jps -v 虽然可以查看虚拟机启动时显示指定的参数列表,但无法显示指定参数的系统默认值。
jinfo命令格式:
jinfo [ option ] pid
jinfo 执行示例:
四、jmap
jmap用于生成堆转储快照,即常说的dump文件,jmap还可以查询finalize执行队列、java堆和方法区的详细信息。
jmap命令格式:
jmap [ option ] vmid
jmap执行示例:
五、jhat
jhat与jmap搭配使用,用来分析jmap生成的堆转储快照。
jhat内置了一个HTTP/Web服务器,生成的堆转储快照后,可以在浏览器查看。
jhat使用示例如下,分析前面生成的dump文件:
通过访问 http://localhost:7000/ 查看分析结果,如图:
六、jstack
jstack用于生成虚拟机当前时刻的线程快照,线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合。常用于定位线程长时间停顿的问题(死锁、死循环等)。
jstack命令格式:
jstack [ option ] vmid
jstack使用示例:
七、其他JDK自带的性能监控和故障处理工具