虚拟机性能监控和故障处理工具

* 如果监控运行与jdk1.5的虚拟上的程序,程序启动时候请添加参数"-Dcom.sun.management.jmxremote"开启JMX管理功能,由于部分工具基于JMX的,但是如果环境在JDK1.6之上,那JMX是默认开启的

Sun JDK监控和故障处理工具
名称主要作用
jpsJVM Process Status Tool,显示指定系统内的所有HotSpot虚拟机进程
jstatJVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据
jinfoConfiguration Info for Java,显示虚拟机配置信息
jmapMemory Map for Java,生成虚拟机的内存转储快照(heapdump)文件
jhatJVM Heap Dump Browser,用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果
jstackStack Trace for Java ,显示虚拟机的线程快照信息

jps:虚拟机进程状况工具

jps命令格式: jps [options] [hostid]

hostid: jps可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态。 hostid是RMI注册表中注册的主机名

,在本地上调用可以省略

jps options选项
选项作用
-q只输出LVMID,省略主类的名称
-m输出虚拟机进程启动时传递给主类main()函数的参数
-l    输出主类的全名,如果进程执行的是Jar包,输出Jar路径
-v输出虚拟机进程启动时JVM参数

功能:主要查询正在运行的虚拟机进程,并显示虚拟机执行主类名称和这些进程的本地虚拟机唯一ID(LVMID)


jstat:虚拟机统计信息监视工具(显示本地或远程类装载、垃圾收集、内存、编译情况)

命令格式:jstat [option vmid [interval[s|ms] [count]] ]

对于命令格式中的VMID与LVMID需要特别说明一下:如果本地虚拟机进程,VMID和LVMID是一致的,如果是远程虚拟机进程,那么VMID的格式:

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

参数interval 和 count 表示查询间隔和次数,如果省略这两个参数,说明只查询一次

option 表示用户查询的信息,主要是3类:类装载、垃圾收集、运行期编译情况


示例: jstat -gc  2764 250 20 

表示需要每250ms查询一次进程2764的垃圾收集情况,查询20次

jstat -gc 内容解读:



S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
PC、PU:永久代容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时

Jinfo:Java配置信息工具

jinfo查询虚拟机各项参数配置

命令格式:

jinfo [options] pid 

-v: 查询虚拟机启动时候显式指定的参数列表

-flag: 查询未被显式指定的参数的系统默认值

-sysprops:将虚拟机进程的System.getProperties()的内容打印

并且,在jdk1.6之后,jinfo在window和Linux平台上都有提供,并加入了运行期参数可以改的能力

-flag [+|-] name 或者 -flag name = value修改一部分运行期可用的虚拟机参数

jmap: Java内存影响工具

jmap命令用于生成对转储快照(一般称为heapdump或dump文件)。

如果不适用jmap命令,要想获取到Java堆转储快照,还有些方法:

比如设置虚拟机参数-XX:+HeapDumpOnOutOfMemoryError参数,通过-XX:HeapDumpOnCtrlBreak参数可以使用[Ctrl]+[Break]键来让虚拟机生成dump文件,或者在linux系统下通过kill -3 命令,获取到dump命令

jmap的作用不仅仅是为了获取到dump文件,它还可以查询finalize执行队列、java堆和永久代的详细信息,如空间使用率、使用的是那种垃圾收集器

命令格式:

jmap  [option] vmid 


示例:先jps获取到vmid,在使用jmap获取到dump文件


jhat: 虚拟机堆转储快照分析工具

和jmap搭配使用分析dump文件,一般不会直接使用jhat命令分析,第一点,本机上分析耗费资源,第二点,相对于VisualVM等dump文件分析工具而言比较简陋

命令格式: jhat dump文件名

jhat内置了一个微型的HTTP/HTML服务器,屏幕显示 "Server is ready.",用户在浏览器键入http://localhost:7000可以直接查看



结果默认已包为单位进行显示,并且分析到内存泄露问题会使用到 Show heap histogram 查询

jstack:Java堆栈跟踪工具

用于生成虚拟机当前时刻的线程快照(也称为threaddump或Javacore文件)。线程快照就是当前虚拟机每一条线程正在执行的方法堆栈集合。主要是定位线程停顿的原因,如死锁,死循环等。

命令格式: jstack [option] vmid ,vmid是jps命令查询到的lvmid


另外,java.lang.Thread类新增了一个getAllStackTraces(),可以获取到线程的StackTraceElement对象,完成jstack的大部分功能

HSDIS:JIT生成代码反编译

让HotSpot的 -XX:+PrintAssembly指令调用它动态生成本地代码还原为汇编代码输出

jdk的可视化工具

1. jconsole:java监视和管理控制台,集合了jps,jstat,jinfo,jstack 的功能

2. visualvm:多合一个故障处理工具

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值