jvm(3)---常用监控工具指令
1.jps 查看jvm中运行的进程(获取对应pid)
参数:默认-V(大写)
-v: 列出jvm启动参数。
----------------------------------
2.jstack pid 查看某个Java进程内的线程堆栈信息,,可用于线程死锁问题排查
----------------------------------
3.jinfo pid 查看某个java进程的jvm参数信息等
---------
jinfo -flags pid 查看jvm参数
----------
jinfo -sysprops pid 查看系统参数
----------------------------------
4.jstat JVM统计监测工具
----------
jstat -class pid 类加载统计
Loaded:加载class的数量
Bytes:所占用空间大小
Unloaded:未加载数量
Bytes:未加载占用空间
Time:时间
--------------
jstat -gc pid 垃圾回收统计
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小(元空间)
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
----------
jstat -gccapacity pid 内存统计 和 jstat -gc pid 结果差不多,多了新生代,老年代,永久代(元空间)的最小和最大容量
NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:当前新生代容量
S0C:第一个幸存区大小
S1C:第二个幸存区的大小
EC:伊甸园区的大小
OGCMN:老年代最小容量
OGCMX:老年代最大容量
OGC:当前老年代大小
OC:当前老年代大小
MCMN:最小元数据容量
MCMX:最大元数据容量
MC:当前元数据空间大小
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC:年轻代gc次数
FGC:老年代GC次数
----------
jstat -gcnew pid 新生代垃圾回收统计
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
TT:对象在新生代存活的次数
MTT:对象在新生代存活的最大次数
DSS:期望的幸存区大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
----------
jstat -gcnewcapacity pid 新生代内存统计
NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:当前新生代容量
S0CMX:最大幸存1区大小
S0C:当前幸存1区大小
S1CMX:最大幸存2区大小
S1C:当前幸存2区大小
ECMX:最大伊甸园区大小
EC:当前伊甸园区大小
YGC:年轻代垃圾回收次数
FGC:老年代回收次数
----------
jstat -gcold pid 老年代垃圾回收统计
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
OC:老年代大小
OU:老年代使用大小
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
----------
jstat -gcoldcapacity pid 老年代内存统计
OGCMN:老年代最小容量
OGCMX:老年代最大容量
OGC:当前老年代大小
OC:老年代大小
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
----------
jstat -gcmetacapacity pid 元空间统计
MCMN:最小元数据容量
MCMX:最大元数据容量
MC:当前元数据空间大小
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
----------
jstat -gcutil pid 占比统计
S0:幸存1区当前使用比例
S1:幸存2区当前使用比例
E:伊甸园区使用比例
O:老年代使用比例
M:元数据区使用比例
CCS:压缩使用比例
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
----------------------------------
5.jmap 内存信息查看
----------
jmap -histo pid > aa.txt 实例信息查看
instances:实例数量
bytes:占用空间大小
class name:类名称
----------
jmap -heap pid 堆信息查看.
----------
堆内存dump
jmap -dump:format=b,file=文件名.hprof pid 取下来可以导入可视化工具分析(正常的生产慎用,会导致卡顿的,生产上面一般设置内存溢出的时候自动dump),比如jvisualvm
可以设置jvm启动参数,内存溢出时,自动保存堆信息(内存很大的,可能无法导出,之前我们项目是属于计算型的项目,机器内存32G,jvm内存分配也很大的) -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=文件路径