一、jps ( jvm process status tool ) 虚拟机进程工具
| 参数 | 作用 |
|---|---|
| -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 ) 显示虚拟机配置信息
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) 收集虚拟机各方面运行数据
1、语法格式jstat [ option pid [interval[s|ms] [count]]]
说明: interval 表示循环时间间隔,默认单位为ms,可以直接使用s/ms指定单位,如 60ms/1s, count 表示输出几次 例:jstat -gc pid 1s 10 : 每1s查询一次gc情况,查询10次
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
| 属性 | 释义 |
|---|---|
| Loaded | 装载总数量 |
| Bytes | 装载总大小 |
| Unloaded | 卸载类的数量 |
| Bytes | 卸载总大小 |
| Time | 加载和卸载类总共的耗时 |
4、查看GC情况 jstat -gc pid
以下容量大小为kb
| 属性 | 释义 |
|---|---|
| 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
6、查看新生代GC情况jstat -gcnew pid
| 属性 | 释义 |
|---|---|
| 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
8、查看各空间容量jstat -gccapacity pid
| 属性 | 释义 |
|---|---|
| NGCMN | 新生代最小容量 |
| NGCMX | 新生代最大容量 |
| NGC | 当前新生代容量 |
| S0C | survivor0大小 |
| S1C | survivor0大小 |
| EC | EDEN区大小 |
| OGCMN | 老年代最小容量 |
| OGCMX | 老年代最大容量 |
| OGC | 当前老年代大小 |
| MCMN | 元数据最小容量 |
| MCMX | 元数据最大容量 |
| CCSMN | 最小压缩类空间大小 |
| CCSMX | 最大压缩类空间大小 |
| CCSC | 当前压缩类空间大小) |
9、查看编译情况jstat -compiler pid
四、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对象映射表 -
参考:
https://my.oschina.net/u/3286119/blog/1927805