我们接着上一篇讲解:
使用命令查看对内存使用情况
使用到的命令:jstat
Jstat:此命令可以查看对内存各个部分的使用量,以及加载类的数据。
命令格式:
Jstat[-命令选项][vmid][间隔时间/毫秒][查询次数]
实例
1:查看class加载统计
1.1:使用jps命令查看java程序的PID:
命令:jps
说明:Bootstrap就是Java运行程序的PID
1.2:使用jstat -class JavaPID 命令查看:
如上图我们查出来的是:10662。所以命令:
Jstat -class 10662
说明:
Loaded:加载的class的数量 11010
Bytest:所占用空间的大小 21662.8
Unloaded:未加载数量 329
Bytest:未加载占用空间 513.6
Time:时间 21.82
1.3:查看编译统计
使用命令:jstat -compiler PID
说明:
Compiled:编译数量
Failed:失败数量
Invalid:不可用数量
Time:时间
FailedType:失败类型
FailedMethod:失败的方法
1.4:垃圾回收统计
命令:jstat -gc PID
此命令也可以指定打印的间隔和次数。
如我们想要每秒打印一次,共打印5次。命令:
Jstat -gc pid 1000 5
JDK1.7下的:
JDK1.8下的:
是否发现1.7与1.8还是由区别的。
说明:
S0C:第一个Survivor区的大小(KB)
S1C:第二个Survivor区的大小(KB)
S0U:第一个Survivor区的使用大小(KB)
S1U:第二个Survivor区的使用大小(KB)
EC:Eden区的大小(KB)
EU:Eden区的使用大小(KB)
OC:Old区大小(KB)
OU:Old使用大小(KB)
MC:方法区大小(KB)
MU:方法区使用大小(KB)
CCSC:压缩类空间大小(KB)
CCSU:压缩类空间使用大小(KB)
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
4Jmap的使用及内存溢出分析
4.1:查看内存使用情况
使用命令:jmap -heap PID
说明:从上图中,我们可以清晰的看出1.8堆内存模型的两个区域
在来看看JDK1.7的:
是不是发现多了Perm区。
从这里我们也能看出JDK1.7与JDK1.8的区别。
本文是《JVM学习系列》中的第三篇文章。如果想系统的学习,建议从本教程第一篇开始看。
下节预告:
本文来源:www.kaigejava.com
凯哥公众号:凯哥Java(kaigejava)
网友评论