虚拟机性能监控与故障处理工具笔记(一)

来源:《深入理解Java虚拟机》 周志明著

表1

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

表1介绍了一下主要的命令行监控工具。
下面开始一一详细介绍:

jps:虚拟机进程状况工具

功能作用:
可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main函数所在的类)名称以及这些进程在本地虚拟机唯一ID。且对于本地虚拟机来说,LVMID与操作系统的进程ID是一致的。

jps命令格式:

jps [options] [hostid]
执行样例:
在这里插入图片描述
jps可以通过RMI协议查询开启RMI服务的远程虚拟机进程状态,hostid为RMI注册表中的注册的主机名
jps工具的主要选项
表2

选项(option)作用
-q只输出LVMID,省略朱磊的名称
-m输出虚拟机进程启动时传递给主类main()函数的参数
-l输出主类的全名,如果进程执行的是jar包,输出jar包路径
-v输出虚拟机进程启动时的JVM参数
jstat:虚拟机统计信息监控工具

功能作用:

用于监视虚拟机各种运行状态信息的命令行工具,可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

jstat命令格式:

jstat [option vmid [interval[slms][count]]

if本地虚拟机->VMIDLVMID相同

elseVMID的格式:[protocol:][//]lvmid[@hostname[:port]/servername]

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

假设每250毫秒查询一次进程2764垃圾收集情况,一个查询20次:

jstat -gc 2764 250 20

jstat工具的主要选项:

选项作用
-class监视类装载、卸载数量、总空间以及类装载所耗费的时间
-gc监视java堆状况、包括Eden区、两个suvivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息
-gccapacity监视内容与-gc基本相同,但输出主要关注java堆各个区域使用到的最大、最小空间
-gcutil监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
-gcnew监视新生代GC状况
-gcnewcapacity监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间
-gccause与-gcutil功能一致,但是会额外输出导致上一次GC产生的原因
-gcold监视老年代GC状况
-gcoldcapacity监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间
-gcpermcapacity输出永久代使用的最大最小空间
-compiler输出JIT编译器编译过的方法、耗时等信息
-printcompilation输出已经被JIT编译的方法
jinfo:Java配置信息工具

功能作用:

实时查看和调整虚拟机各项参数

jinfo命令格式:

jinfo [option] pid

jmap:java内存映像工具

功能作用:

用于生成堆转储快照(一般称为heapdump或dump文件),查询finalize执行队列、java堆和永久代的详细信息,如空间使用率、当前使用的是哪种收集器。

(暴力获取:-XX:HeapDumpOnOutOfMemoryError可以让虚拟机OOM异常出现之后自动生成dump文件,-XX:+HeapDumpOnCtrlBreak可以通过使用[ctrl]+[break]键生成dump文件)

jmap命令格式:

jmap [option] vmid

jmap工具主要选项

选项作用
-dump生成Java堆转储快照。格式为:-dump:[live,]fomat=b,file=<filename>其中live子参数说明是否只dump出存活对象
-finalizerinfo显示在F-Queue中等待Finalizer线程执行finalize方法的对象.只在Linux、Solaris平台下下载有效
-heap显示在java堆详细信息,如使用哪种回收器,参数配置、分代状况、等,只在linux/Solaris下有效
-histo显示堆中统计信息,包括类、实例数量、合计容量
-permstat以ClassLoader为统计口径显示永久代内存状态。只在Linux/Solaris平台下有效
-F当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照.只在Linux/Solaris
jhat:虚拟机堆转储快照分析工具

功能作用:

jmap结合使用,来分析jmap生成的堆转储快照,可以在浏览器查看分析结果。
但是一般不会使用其来分析:

  • 不会部署应用程序的服务器上直接分析dump文件,其分析工作比较耗时且消耗硬件资源
  • jhat的分析功能相对简陋
    所以不着重解释了。
jhat:虚拟机堆转储快照分析工具

功能作用:

jmap结合使用,来分析jmap生成的堆转储快照

jstack:Java堆栈跟踪工具

功能作用:

用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore),线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的原因是定位线程出现长时间停顿的原因。

jstack命令格式:

jstack [option] vmid

jstack工具主要选项

选项作用
-F当正常输出的请求不被响应的时候,强制输出线程堆栈
-l除堆栈之外,显示关于锁的附加信息
-m如果调用到本地方法话,可以显示C/C++的堆栈
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值