1、需要注意的重点信息
新生代对象增长的速率
Young GC的触发频率
Young GC的耗时
每次Young GC过后有多少对象是存活下载的
每次Young GC过后有多少对象进入老年代
老年代对象增长的速率
Full GC的触发频率
Full GC的耗时
2、jps
显示指定系统内所有的HotSpot虚拟机进程
jps可以通过RMI协议查询开启RMI服务的进程虚拟机进程状态,hostid为RMI注册表中注册的主机名。
-q:只输出LVMID,省略主类的名称
-m:输出虚拟机进程启动时传递给主类main()函数的参数
-l:输出主类的全名,如果进程执行的是Jar包,输出Jar路径
-v:输出虚拟机进程启动时的JVM参数
3、jinfo
显示虚拟机配置信息
jinfo的作用是实时地查看和调整虚拟机各项参数
jinfo [option] <pid> 连接到正在运行的进程
jinfo [option] <executable <core> 连接到核心文件
jinfo [option] [server_id@]<remote server IP or hostname> 连接到远程调试服务器
<option>
-flag <name> 打印已命名的VM标志的值
-flag [+|-]<name> 启用或禁用命名的VM标志
-flag <name>=<value> 将命名的VM标志设置为给定值
-flags 打印虚拟机标志
-sysprops 打印Java系统属性
<no option> 打印以上两项
-h | -help 打印帮助信息
4、jmap
生成虚拟机的内存转储快照(headdump文件)
jmap [option] <pid> 连接到正在运行的进程
jmap [option] <executable <core> 连接到核心文件
jmap [option] [server_id@]<remote server IP or hostname> 连接到远程调试服务器
<option>
<none> 打印与Solaris pmap相同的信息
-heap 打印java堆概要信息
-histo[:live] 打印Java对象堆的直方图;如果指定了“Live”子选项,只对实况对象进行计数
-clstats 打印类加载器统计信息
-finalizerinfo 打印等待完成的对象的信息
-dump:<dump-options> 将java进程堆内内存中各个class实例的详细信息以二进制格式转储选项中转储Java堆
-h | -help 打印帮助信息
-J<flag> 将<flag>直接传递到运行时系统
5、jhat
jhat与jmap搭配使用,分析生成的堆转储快照。jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。
6、jstat
收集HotSpot虚拟机各方面的运行数据
jstat是用于监视虚拟机各种运行状态信息的命令行工具。
jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
定义
<option> option的一个选择参数
<vmid> 虚拟机标识符。vmid可以采用以下形式:<lvmid>[@<hostname>[:<port>]]
<lvmid>是目标Java虚拟机的本地VM标识符,通常是进程ID;
<host name>是运行目标Java虚拟机的主机的名称;
<port>是目标主机上rmi注册的端口号。
<lines> 标题行之间的样本数
<interval> 采样间隔。可以采用一下形式:<n>["ms"|"s"]
<n>是一个整数,后缀将单位指定为毫秒(“ms”)或秒(“s”),默认单位为“ms”。
<count> 终止前要采集的样本数。
-J<flag> 将<flag>直接传递到运行时系统。
<option>
-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编译过的方法
列名介绍
E 年轻代中Eden(伊甸园)已使用的占当前容量百分比
O 年老代已使用的占当前容量百分比
M 元空间(MetaspaceSize)已使用的占当前容量百分比
P 持久代已使用的占当前容量百分比 (这个参数在JDK 1.8之前才有效)
S0 年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1 年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
S0C 年轻代中第一个survivor(幸存区)的容量
S1C 年轻代中第二个survivor(幸存区)的容量
S0U 年轻代中第一个survivor(幸存区)目前已使用空间
S1U 年轻代中第二个survivor(幸存区)目前已使用空间
EC 年轻代中Eden(伊甸园)的容量
EU 年轻代中Eden(伊甸园)目前已使用空间
OC 年老代的容量
OU 年老代目前已使用空间
MC 当前元数据空间大小
MU 当前元数据空间已使用大小
CCS 压缩使用比例
CCSC 当前压缩类空间大小
CCSU 当前压缩类空间已使用大小
YGC 年轻代垃圾回收次数
YGCT 年轻代垃圾回收消耗时间
FGC 老年代GC次数
FGCT 老年代垃圾回收消耗时间
TT 持有次数限制
MTT 最大持有次数限制
GCT 垃圾回收消耗总时间
DSS 当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
NGCMN 年轻代(young)中初始化(最小)的大小
NGCMX 年轻代(young)的最大容量
NGC 年轻代(young)中当前的容量
OGCMN 年老代中初始化(最小)的大小
OGCMX 年老代的最大容量
OGC 年老代当前新生成的容量
MCMN 最小元数据容量
MCMX 最大元数据容量
CCSMN 最小压缩类空间大小
CCSMX 最大压缩类空间大小
7、jstack
显示虚拟机的线程快照
jstack [-l] <pid> 连接到正在运行的进程
jstack -F [-m] [-l] <pid> 连接到挂起的进程
jstack [-m] [-l] <executable> <core> 连接到核心文件
jstack [-m] [-l] [server_id@]<remote server IP or hostname> 连接到远程调试服务器
option
-F 强制线程转储。当jstack<pid>不响应时使用(进程挂起)
-m 打印Java和本机帧,所有线程(混合模式)
-l 除堆栈外,显示关于锁的附加信息
-h or -help to print this help message