jvm常用命令行工具使用

一、jps ( jvm process status tool ) 虚拟机进程工具

jvm常用命令行工具使用

参数 作用
-q 忽略主类的名称,只输出pid
-m 输出启动类main函数的参数
-l 输出主类名,如果进程执行的为jar,则输出jar路径
-v 输出具体进程启动时jvm参数

1.命名格式
jps [options] pid
2.常用方式

  • jps -lv : 输出启动类名与启动时jvm参数,可以方便的看到各个tomcat的自定义参数配置
  • jps -lv |grep project_name : 在上述基础上过滤出自己想要查看的项目的信息

二、jinfo ( configuration info for java ) 显示虚拟机配置信息 

jvm常用命令行工具使用

1.常用用法

  • jinfo pid : 显示jvm系统属性与vm参数信息
  • jinfo -flags pid : 显示jvm vm参数信息,如最大最小堆,默认堆,垃圾收集器参数等
  • jinfo -sysprops pid : 显示jvm系统属性
  • jinfo -flag : 显示特定vm参数值,例如 jinfo -flag MaxHeapSize pid 输出pid的最大堆内存

三、jstat ( jvm statistics monitoring tool) 收集虚拟机各方面运行数据

jvm常用命令行工具使用

1、语法格式
jstat [ option pid [interval[s|ms] [count]]]
说明: interval 表示循环时间间隔,默认单位为ms,可以直接使用s/ms指定单位,如 60ms/1s, count 表示输出几次 例:
jstat -gc pid 1s 10 : 每1s查询一次gc情况,查询10次 jvm常用命令行工具使用

2、option 详解(主要分三类:类装载、垃圾收集、运行期编译状况)

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

3、查看类装载卸载情况 jstat -class pid

jvm常用命令行工具使用

属性 释义
Loaded 装载总数量
Bytes 装载总大小
Unloaded 卸载类的数量
Bytes 卸载总大小
Time 加载和卸载类总共的耗时

4、查看GC情况 jstat -gc pid

以下容量大小为kb

jvm常用命令行工具使用

属性 释义
S0C 新生代survivor0容量
S1C 新生代survivor1容量
S0U 新生代survivor0已使用大小
S1U 新生代survivor1已使用大小
EC 新生代eden区容量
EU 新生代eden区已使用大小
OC 老年代容量
OU 老年代已使用大小
MC 元数据容量,即方法区容量
MU 元数据已使用空间
CCSC 压缩类空间大小
CCSU 压缩类空间使用大小
YGC 新生代gc次数(young gc)
YGCT 新生代gc时间(s)
FGC 老生代gc次数(full gc)
GCT 总的gc时间,包括young gc和full gc

5、查看GC情况,以百分比显示
jstat -gcutil pid

jvm常用命令行工具使用

6、查看新生代GC情况
jstat -gcnew pid

jvm常用命令行工具使用

属性 释义
S0C 新生代survivor0容量
S1C 新生代survivor1容量
S0U 新生代survivor0已使用大小
S1U 新生代survivor1已使用大小
TT 对象在新生代存活的次数
MTT 对象在新生代存活的最大次数
DSS 期望的幸存区大小
EC eden区大小
EU eden区已使用大小
YGC young gc次数
YGCT young gc 时间 (秒)

7、查看老年代GC情况
jstat -gcold pid

jvm常用命令行工具使用

8、查看各空间容量
jstat -gccapacity pid

jvm常用命令行工具使用

属性 释义
NGCMN 新生代最小容量
NGCMX 新生代最大容量
NGC 当前新生代容量
S0C survivor0大小
S1C survivor0大小
EC EDEN区大小
OGCMN 老年代最小容量
OGCMX 老年代最大容量
OGC 当前老年代大小
MCMN 元数据最小容量
MCMX 元数据最大容量
CCSMN 最小压缩类空间大小
CCSMX 最大压缩类空间大小
CCSC 当前压缩类空间大小)

9、查看编译情况
jstat -compiler pid

jvm常用命令行工具使用


四、jmap ( memory map for java ) 虚拟机堆快照工具 

1、常用用法

  • jmap -heap pid 查看当前jvm heapdump与垃圾收集器的使用情况 。该命令输出内容解读可以参考链接:jmap heap输出各项参数解释

  • jmap -dump:format=b,file=/temp/filename.hprof pid 转储堆快照,生成hprof文件到指定路径  
  • jmap -histo pid 列出当前heap中对象状况,附字节码与java对象映射表 
  • jvm常用命令行工具使用

jvm常用命令行工具使用

 

 参考:

 https://my.oschina.net/u/3286119/blog/1927805