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++片段)堆栈