jps
jps与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号
jconsole
jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。
jmap
打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。
jmap -heap pid #显示Java堆详细信息
jmap -histo pid #显示堆中对象的统计信息
jmap -histo pid
结果解析:
#instance 是对象的实例个数
#bytes 是总占用的字节数
class name 对应的就是 Class 文件里的 class 的标识
B 代表 byte
C 代表 char
D 代表 double
F 代表 float
I 代表 int
J 代表 long
Z 代表 boolean
前边有 [ 代表数组, [I 就相当于 int[]
对象用 [L+ 类名表示
jstat
jstat是一个极强的监视VM内存工具,可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。
jstat -class pid 查看加载class的数量,及所占空间等信息
jstat -compiler pid 查看VM实时编译的数量等信息
jstat -gc pid 查看gc情况
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
jstat -gccapacity pid 查看gc中内存使用情况
NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:当前新生代容量
S0C:第一个幸存区大小
S1C:第二个幸存区的大小
EC:伊甸园区的大小
OGCMN:老年代最小容量
OGCMX:老年代最大容量
OGC:当前老年代大小
OC:当前老年代大小
MCMN:最小元数据容量
MCMX:最大元数据容量
MC:当前元数据空间大小
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC:年轻代gc次数
FGC:老年代GC次数
jstat -gcnew pid 查看新生代信息
jstat -gcnewcapacity pid 查看新生代内存占用情况
jstat -gcold pid 查看老年代信息
jstat -gcoldcapacity pid 查看老年代内存占用情况
jstat -gcmetacapacity pid 查看元数据区内存占用情况
jstat -util pid 统计gc信息统计
jstack
jstack pid 查看jvm线程运行状态,是否有死锁现象等等信息
jstack -F pid pid无法响应时,强制打印堆栈
jstack -l pid 打印关于锁的附加信息
jstack -m pid 混合模式输出(包括java和本地c/c++片段)堆栈