- jstat
- jstack
- jmap
- netstat(非jvm命令)
-
jstat 查看Jvm的堆栈信息
能够查看eden,survivor,old,perm等heap的capacity,utility信息,对于查看系统是不是有能存泄漏以及参数设置是否合理有不错的意义
-
jstack 查看jvm当前的thread dump的
可以看到当前Jvm里面的线程状况,这个对于查找blocked线程比较有意义
-
jmap .
查看jvm当前的heap dump的,可以看出当前jvm中各种对象的数量,所占空间等等。
尤其值得一提的是这个命令可以到处一份binary heap dump的bin文件,这个文件能够直接用
Eclipse Memory Anayliser来分析,并找出潜在的内存泄漏的地方。
-
还有一个比较有用的非jvm命令–netstat
通过这个命令可以看到linux系统当前在各个端口的链接状态,比如查看数据库连接数等等
jstat
jstat分析的内容(指标)
新生代对象增长的速率
Young GC的触发频率
Young GC的耗时
老年代对象增长的速率 Full
GC的触发频率
Full GC的耗时
每次Young GC后有多少对象是存活下来的
每次Young GC过后有多少对象进入了老年代
目的
- 通过这些指标,我们可以轻松的分析当前系统的运行情况
- 判断当前系统的内存使用压力以及GC压力
- 还有就是内存分配是否合理,为可能要做的优化做准备
常用的jstat命令
jps:找出你们的Java进程的PID
jstat -gc pid:查看Java进程(JVM)的内存和GC情况
可以显示gc的信息,查看gc的次数,及时间等。
运行这个命令之后会看到如下列:
SOC:这是From Survivor区的大小.
S1C:这是To Survivor区的大小
SOU:这是From Survivor区当前使用的内存大小
S1U:这是To Survivor区当前使用的内存大小
EC:这是Eden区的大小
EU:这是Eden区当前使用的内存大小
OC:这是老年代的大小
OU:这是老年代当前使用的内存大小
MC:这是方法区(永久代、元数据区)的大小
MU:这是方法区(永久代、元数据区)的当前使用的内存大小
YGC:这是系统运行迄今为止的Young GC次数
YGCT:这是Young GC的耗时
FGC:这是系统运行迄今为止的Full GC次数
FGCT:这是Full GC的耗时
GCT:这是所有GC的总耗时
其中最重要的是最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间
jstat -gccapacity pid:堆内存分析
可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,
如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推,
OC是old内纯的占用量。
jstat -gcnewcapacity pid:年轻代对象的信息及其占用量
stat -gcoldcapacity pid:old代对象的信息及其占用量
jstat -gcpermcapacity pid:perm对象的信息及其占用量
jstat -gcnew pid:年轻代对象的信息
jstat -gcold pid:old代对象的信息
jstat -gcutil pid: 统计gc信息统计
jstat -class pid:显示加载class的数量,及所占空间等信息
jstat -compiler pid:显示VM实时编译的数量等信息
stat -printcompilation pid: 当前VM执行的信息
一些术语的中文解释:
SOC:这是From Survivor区的大小.
S1C:这是To Survivor区的大小
SOU:这是From Survivor区当前使用的内存大小
S1U:这是To Survivor区当前使用的内存大小
EC:这是Eden区的大小
EU:这是Eden区当前使用的内存大小
OC:这是老年代的大小
OU:这是老年代当前使用的内存大小
MC:这是方法区(永久代、元数据区)的大小
MU:这是方法区(永久代、元数据区)的当前使用的内存大小
YGC:这是系统运行迄今为止的Young GC次数
YGCT:这是Young GC的耗时
FGC:这是系统运行迄今为止的Full GC次数
FGCT:这是Full GC的耗时
GCT:这是所有GC的总耗时
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)
NGC:年轻代(young)中当前的容量 (字节)
OGCMN:old代中初始化(最小)的大小 (字节)
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
PGCMN:perm代中初始化(最小)的大小 (字节)
PGCMX:p