0%

JVM之第四章:虚拟机性能监控与故障处理工具

第四章:虚拟机性能监控与故障处理工具

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

JDK的可视化工具

JConsole:Java监视与管理控制台
VisualVM:多合一故障处理工具
~~