jps
jps的命令跟ps差不多,不过简陋挺多。
// 获取java进程号以及主方法的类名
jps
// 获取java进程号以及主方法的类全称
jps -l
// 只获取java进程号
jps -q
// 获取参数
jps -m
// 获取jvm参数
jps -v
// 获取远程的java进程(没成功过)
jps [hostid]
jstat
利用jps获取到java进程号之后,就可以使用jstat去监控了。
// 获取堆的状况
// 参数1: 进程id
// 参数2: 查询间隔,单位为毫秒
// 参数3: 查询次数
jstat -gc pid
// 获取堆的各个区域使用到的最大、最小空间
jstat -gccapacity pid
// 获取堆的已使用空间占总空间的百分比
jstat -gcutil pid
// 还有众多gc开头的参数,具体以-help解释为主
// 输出JIT编译器的耗时
jstat -compiler
// 输出JIT编译过的方法
jstat -printcompilation
其中的专业术语
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
PC:Perm(持久代)的容量 (字节)
PU:Perm(持久代)目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)
NGC:年轻代(young)中当前的容量 (字节)
OGCMN:old代中初始化(最小)的大小 (字节)
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
PGCMN:perm代中初始化(最小)的大小 (字节)
PGCMX:perm代的最大容量 (字节)
PGC:perm代当前新生成的容量 (字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT: 持有次数限制
MTT : 最大持有次数限制
jinfo
用于实时查看JVM的各项参数
// 获取进程号为pid的JVM配置
jinfo pid
// flag 用于获取某个参数,常用于隐式参数
// 获取CMSInitatingOccupancyFraction参数
jinfo -flag CMSInitatingOccupancyFraction pid
jmap
用于生成堆转储快照,查询finalize执行队列、Java堆和永久代的详细信息。
// 生成堆转储快照
// pid
jmap -dump pid
// 显示finalize队列
jmap -finalizerinfo pid
// 显示java堆信息,回收器、参数配置、分代状况等
jmap - heap pid
// 显示堆中对象统计信息,包括类、实例数量、合计容量
jmap -histo pid
// 显示永久代内存状态
jmap -permstat pid
// 强制生成快照
jmap -F pid
jhat
分析虚拟机堆转储快照的工具,没有实际用途。
jstack
生成虚拟机当前时刻的线程快照。用于定位线程长时间停顿的问题。
HSDIS
占位
JConsole
终于出现一个使用过的工具了。因为是可视化工具,所以一般应该都看得懂。
VisualVM
- 显示虚拟机进程以及进程的配置、环境信息
- 监视应用程序的CPU、GC、堆、方法区以及线程的信息
- dump以及分析堆转储快照
- 方法级的程序运行性能分析,找出被调用最多,运行时间最长的方法
- 离线程序快照:收集程序的运行时配置、线程dump、内存dump等信息建立一个快照
- 其他三方插件