Java虚拟机(四) -虚拟机性能监控与故障处理工具

一、查看虚拟机进程状况(jps)

功能:

  1. 列出虚拟机执行进程
  2. 显示虚拟机执行主类
  3. 列表进程的本地虚拟机唯一ID(Local Virtual Machine Identifier, LVMID)

命令格式:

jps [options] [hostid]

#hostid是RMI注册表中注册的主机名

RMI:远程方法调用(Remote Method Invocation)。能够让在客户端Java虚拟机上的对象像调用本地对象一样调用服务端java 虚拟机中的对象上的方法。

jps可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态。

执行样例:

jps -l

返回样例:

#进程号 类名
19776 sun.tools.jps.Jps
14552 org.jetbrains.jps.cmdline.Launcher
11164 org.jetbrains.idea.maven.server.RemoteMavenServer

参数(options)解释:

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

功能:

  1. 显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

命令格式:

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

#vmid解释,本地虚拟机vmid和lvmid一致,远程的vmid格式为:[protocol:][//]lvmid[@hostname[:port]/servername]
#interval 代表查询间隔;count 代表查询次数;如果省略这两个,说明查询一次

执行样例:

# 查询15612进程垃圾收集情况 每1000毫秒,查询一次,连续10次
jstat -gc 15612 1000 10

参数(options)解释:

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

输出样例:

C:\Program Files\Java\jdk1.8.0_181\bin>jstat -gcutil 43732 250 6
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
 99.79   0.00  48.49  25.22  97.68  96.68     12    0.104     2    0.099    0.203
 99.79   0.00  48.49  25.22  97.68  96.68     12    0.104     2    0.099    0.203
 # s0,Survivor0; s1,Survivor1; E,Eden; O,Old,
 # YGC,Young GC; YGCT,Young GC Time (Young GC耗时); FGC,Full GC; FGCT,Full GC Time (Full GC耗时);
三、Java配置信息工具(jinfo)

功能:

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

命令格式:

# 不加option输出所有信息
jinfo [option] pid

执行样例:

jinfo 43732

返回样例:

C:\Program Files\Java\jdk1.8.0_181\bin>jinfo 43732
Attaching to process ID 43732, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.181-b13
Java System Properties:

java.vendor = Oracle Corporation
sun.java.launcher = SUN_STANDARD
catalina.base = F:\data\store\tomcat\tomcat-datacenter
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
sun.nio.ch.bugLevel =
catalina.useNaming = false
spring.output.ansi.enabled = always
os.name = Windows 10
...
四、Java内存映像工具(jmap)

作用:

  1. 生成堆存储快照(一般称为heapdump或dump文件)
  2. 查询finalize执行队列

命令格式:

jmap [option] vmid

参数选项:

选项作用
-dump生成Java堆转储快照 格式:-dump:[live, ]format=b, file=,其中live子参数说明是否只dump出存活的对象
-finalizerinfo显示在F-Queue中等待Finalizer线程执行finalize方法的对象
-heap显示Java堆详细信息
-histo显示堆中对象统计信息,包括类、实例数量、合计容量

执行样例:

jmap -dump:format=b,file=eclipse.bin 43732
五、虚拟机堆转储快照分析工具(jhat)

功能:

  1. 与jmap搭配使用,分析jmap生成的堆转储快照

命令格式:

jhat filename
# filename为具体文件名
六、Java堆栈跟踪工具

作用:

  1. 生成虚拟机当前时刻的线程快照(一般称为threaddump或者Javcore文件)。

命令格式:

jstack [option] vmid

[1] 周志明 · 深入理解Java虚拟机 :机械工业出版社

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值