一、查看虚拟机进程状况(jps)
功能:
- 列出虚拟机执行进程
- 显示虚拟机执行主类
- 列表进程的本地虚拟机唯一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)
功能:
- 显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、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)
功能:
- 实时查看和调整虚拟机各项参数。
命令格式:
# 不加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)
作用:
- 生成堆存储快照(一般称为heapdump或dump文件)
- 查询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)
功能:
- 与jmap搭配使用,分析jmap生成的堆转储快照
命令格式:
jhat filename
# filename为具体文件名
六、Java堆栈跟踪工具
作用:
- 生成虚拟机当前时刻的线程快照(一般称为threaddump或者Javcore文件)。
命令格式:
jstack [option] vmid
[1] 周志明 · 深入理解Java虚拟机 :机械工业出版社