1、 jps -l (全称JVM Process Status Tool)输出主类的全名,如果是jar包,输出jar包的全路径,如下:
2、jstat(JVM Statics Monitoring Tool)
jstat -gc pid time times【可以先用ps -ef|grep java找出对应的线程ID】查看的是总量
jstat -gc 22866 300 5 表示每隔300ms查看线程22866的垃圾回收情况,一共打印5次,如下图
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
1152.0 1152.0 800.0 0.0 696704.0 580419.4 1398144.0 416929.5 150656.0 150633.7 126 5.189 0 0.000 5.189
S0C表示Survivor0空间的大小,单位KB
S1C表示Survivor1空间的大小,单位KB
S0U表示Survivor0已用空间的大小,单位KB
S1U表示Survivor1已用空间的大小,单位KB
EC表示Eden空间的大小,单位KB
EU表示Eden已用空间的大小,单位KB
OC表示老年代空间的大小,单位KB
OU表示老年代已用空间的大小,单位KB
PC表示永久代空间的大小,单位KB
PU表示永久代已用空间的大小,单位KB
YGC表示新生代空间GC发生的次数
YGCT表示新生代空间GC处理花费的时间
FGC表示fullGC发生的次数
FGCT表示fullGC处理花费的时间
GCT表示GC操作花费的总时间
3、jstat -gcutil 22866 2000 3 表示每隔2000ms查看线程22866已用空间占总空间的百分比,一共打印3次,如下图
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 100.00 82.98 29.83 99.99 127 5.204 0 0.000 5.204
查询结果表明:此台服务器的新生代Eden区使用了82.98%的空间,SO是空的,S1已使用100%,老年代和永久代分别使用了29.83%和99.99%,程序运行以来共发生YGC127次,总耗时5.204秒;没有发生过full GC。所有GC总耗时为5.204秒。
4、jstack (Stack Trace for Java)
jstack -F 22866 表示正常输出的请求不被响应时,强制输出堆栈的信息
jstack -l 22866 表示除堆栈外,显示锁的附加信息
jstack -m 22866 表示如果调用到本地方法话,可以显示C/C++的堆栈