JVM學習系列學習四
我們接著上一篇講解:
使用命令查看對內存使用情況
使用到的命令: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學習系列》中的第三篇文章。如果想系統的學習,建議從本教程第一篇開始看。
下節預告:
※胡歌再次當伴郎被搶到手捧花
※怎麼將本地項目放到碼雲 gitee上面?圖文詳解
TAG:凱哥java |