简介
主要是介绍一下对运行Java程序的一些跟踪,以及对JVM内存等方面进行运维的一些方法。
反解析class文件的工具使用
一般使用jd-gui工具进行反编译class文件
有些jd-gui无法反编译的class,可以使用luyten工具进行反编译
Java进程分析命令介绍
jps
用于获取所有的JVM进程信息,类似于linux的ps命令
//输出进程号与执行的主类名(jar包名)
jps -l
结果如下:
30352
20708 sun.tools.jps.Jps
6876 mtex-config-0.0.1-SNAPSHOT.jar
复制代码
jstat
用于监控java进程内部各类运行状态信息的工具,可以监控本地或远程虚拟机类装载、内存、垃圾回收等信息。
//监控GC情况 间隔1000毫秒执行1次 执行5次
jstat -gc 6876 1000 5
执行结果如下:
C:\Users\dell>jstat -gc 6876 1000 5
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
13824.0 15872.0 13804.6 0.0 140288.0 129170.6 102400.0 19730.9 54528.0 52078.9 7168.0 6684.3 10 0.143 2 0.172 0.315
13824.0 15872.0 13804.6 0.0 140288.0 129170.6 102400.0 19730.9 54528.0 52078.9 7168.0 6684.3 10 0.143 2 0.172 0.315
13824.0 15872.0 13804.6 0.0 140288.0 129170.6 102400.0 19730.9 54528.0 52078.9 7168.0 6684.3 10 0.143 2 0.172 0.315
13824.0 15872.0 13804.6 0.0 140288.0 129170.6 102400.0 19730.9 54528.0 52078.9 7168.0 6684.3 10 0.143 2 0.172 0.315
13824.0 15872.0 13804.6 0.0 140288.0 129170.6 102400.0 19730.9 54528.0 52078.9 7168.0 6684.3 10 0.143 2 0.172 0.315
结果说明:
S0C 年轻代s0区容量
S1C 年轻代s1区容量
S0U 年轻代s0区使用量
S1U 年轻代s1区使用量
EC 年轻代eden区容量
EU年轻代eden区容量
OC 老年代容量
OU 老年代使用量
MC 元空间容量
MU 元空间使用量
CCSC 压缩类空间容量
CCSU 压缩类空间使用大小
YGC 从应用程序启动到采样时年轻代中gc次数
YGCT 从应用程序启动到采样时年轻代中gc时间
FGC 从应用程序启动到采样时全gc次数
FGCT 从应用程序启动到采样时全gc时间
GCT 从应用程序启动到采样时gc用的总时间(s)
复制代码
s0和s1中必然有一个的使用空间为0,用于复制交换
JDK 1.8以下MC/MU指标为PC/PU。(jdk1.8使用元空间替换了永久代)
通过参数的不同,可以进行某些方面的重点信息关注
选项
作用
-class
监视类装载、卸载数量、总空间以及类装载所耗费的时间
-gc
监视Java堆状况,包括Eden区、两个survivor区、老年代、元空间的容量、已用空间、GC时间合计等信息
-gccapacity
监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间
-gcutil
监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
-gccause
与-gcutil功能一样&