深入理解Java虚拟机(七)—— 基于命令行的性能监控与故障分析工具

一、jps

        JDK的bin目录下jps.exe工具。

图 1-1 jps.exe

        作用是查询进程状况,和linux的ps指令类似,可以列举出进程、 执行主类的名称、进程编号。

jps 命令格式:

jps [ options ] [ hostid ]

图 1-2 jps主要选项

        jps执行样例:

图 1-3 jps执行样例

二、jstat

        jstat是用于监视虚拟机各种运行状态信息的命令行工具。   

        jstat可以显示进程中的类加载、内存、垃圾收集、即时编译等运行时数据。

jstat 命令格式:

jstat [ option vmid [ interval [ s | ms ] [ count ] ]

如果是远程虚拟机进程,则VMID的格式为:

[ protocol: ][ // ] lvmid [ @hostname [ :port ] /servername ]

参数说明:

interval - 代表查询的间隔

count - 代表查询的次数 

图 2-1 jstat工具主要选项

        jstat执行示例:

图 2-1 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 执行示例:

图 3-1 jinfo执行示例

四、jmap

        jmap用于生成堆转储快照,即常说的dump文件,jmap还可以查询finalize执行队列、java堆和方法区的详细信息。

jmap命令格式:

jmap [ option ] vmid

图 4-1 jmap工具主要选项

        jmap执行示例:

图 4-2 jmap执行示例

五、jhat

        jhat与jmap搭配使用,用来分析jmap生成的堆转储快照。

        jhat内置了一个HTTP/Web服务器,生成的堆转储快照后,可以在浏览器查看。

        jhat使用示例如下,分析前面生成的dump文件:

图 5-1 jhat使用示例

        通过访问 http://localhost:7000/  查看分析结果,如图:

图 5-2 jhat分析结果

六、jstack

        jstack用于生成虚拟机当前时刻的线程快照,线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合。常用于定位线程长时间停顿的问题(死锁、死循环等)。

jstack命令格式:

jstack [ option ] vmid 

图 6-1 jstack主要选项

        jstack使用示例:

图 6-2 jstack 使用示例

七、其他JDK自带的性能监控和故障处理工具

图 7-1 其他JDK自带的性能监控和故障处理工具


        

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容