1)jps
# 查看java进程(显示主类全名)
jps -l
# 查看java进程(运行传入主类的参数)
jps -m
# 查看java进程(显示JVM参数)
jps -v
2)jstat
查看JVM统计信息,查看类加载、内存、垃圾收集、JIT编译信息。
官方文档
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html
# 查看options参数的帮助
jstat -options -help
# 每1秒打印一次GC信息
jstat -gcutil 16876 1000
# 每1秒打印一次GC信息,共打印10次
jstat -gcutil 16876 1000 10
# 查看垃圾收集信息
jstat -gc 16876 1000 10
# 查看类装载信息
jstat -class 16876 1000
# 每1秒打印一次GC信息
jstat -gcutil 16876 1000
-------------------------
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 99.56 52.16 18.72 81.15 84.83 1 0.005 0 0.000 0.005
0.00 99.56 52.16 18.72 81.15 84.83 1 0.005 0 0.000 0.005
... ...
0.00 0.00 36.73 72.19 81.16 84.83 3 0.017 1 0.119 0.135
0.00 0.00 36.73 72.19 81.16 84.83 3 0.017 1 0.119 0.135
-------------------------
S0:表示Survior的from区
S1:表示Survior的to区
E: 表示Eden区
O: 表示Old区
M: 表示Metaspace
CCS:
YGC: 表示Young GC次数
YGCT: 表示Young GC时间,单位秒
FGC: 表示Full GC次数
FGCT: 表示Full GC时间,单位秒
GCT: 表示Young GC和Full GC的总时间
# 查看垃圾收集信息
jstat -gc 16876 1000 10
-------------------------
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
1536.0 1536.0 0.0 0.0 10240.0 4204.4 27648.0 0.0 4480.0 775.1 384.0 76.4 0 0.000 0 0.000 0.000
1536.0 1536.0 0.0 0.0 10240.0 4541.0 27648.0 0.0 4480.0 775.1 384.0 76.4 0 0.000 0 0.000 0.000
1536.0 1536.0 0.0 0.0 10240.0 4541.0 27648.0 0.0 4480.0 775.1 384.0 76.4 0 0.000 0 0.000 0.000
-------------------------
S0C:年轻代中 To Survivor 的容量(单位 KB);
S1C:年轻代中 From Survivor 的容量(单位 KB);
S0U:年轻代中 To Survivor 目前已使用空间(单位 KB);
S1U:年轻代中 From Survivor 目前已使用空间(单位 KB);
EC: 年轻代中 Eden 的容量(单位 KB);
EU: 年轻代中 Eden 目前已使用空间(单位 KB);
OC: 老年代的容量(单位 KB);
OU: 老年代目前已使用空间(单位 KB);
MC: 元空间的容量(单位 KB);
MU: 元空间目前已使用空间(单位 KB);
YGC: 从应用程序启动到采样时年轻代中 gc 次数;
YGCT:从应用程序启动到采样时年轻代中 gc 所用时间 (s);
FGC: 从应用程序启动到采样时 老年代(Full Gc)gc 次数;
FGCT:从应用程序启动到采样时 老年代代(Full Gc)gc 所用时间 (s);
GCT: 从应用程序启动到采样时 gc 用的总时间 (s)。
3)jinfo
实时调整和查看JVM参数。
jinfo -XX:option=value
# 查看java进程信息(含JVM、系统环境变量等信息)
jinfo 16876
# 查看JVM的flag信息
jinfo -flags 16876
# 查看指定名称的flag信息
jinfo -flag UseG1GC 16876
# 启用或禁用指定名称的JVM标志,只有被标记为manageable的flags可以被实时修改
jinfo -flag [+|-]name PID
# 设置指定flag名称的值
jinfo -flag name=value PID
4)jmap
# 查看堆内存相关信息
jmap -heap PID
# 转储堆栈信息到文件
jmap -dump:format=b,file=filepath PID
# 查看存活对象
jmap -histo:live PID
5)jstack
查看线程堆栈信息,可用于分析死锁的情况。
jstack PID