jstat查看gc情況

jstat通常用來分析系統的垃圾回收情況。

1)命令:

jstat -gccause pid 2000     #每格2秒輸出結果

jstat -gcutil pid  2000


2)分析:

S0、S1 代表兩個Survivor區;
E 代表 Eden 區;
O(Old)代表老年代;
P(Permanent)代表永久代;
YGC(Young GC)代表Minor GC次數;
YGCT代表Minor GC耗時;
FGC(Full GC)代表Full GC次數;
GCT代表Minor & Full GC共計耗時。
Java 堆分爲新生代和老年代,新生代一般劃分爲三塊區域,Eden + From Survivor + To Survivor,Eden 和 Survivor 的內存比爲8:1,每次只使用一個Eden 和一個 Survivor 區域,另一個Survivor 用於複製收集算法回收內存。

對象一般儘量分配到新生代中,而對於大對象(長字符串和大數組)直接分配在老年代中,同時“年齡”長的的對象會從新生代自動晉升到老年代中。

 

Java 方法區稱爲永久代,只有 HotSpot 虛擬機才存在永久代。

 

首先想eden區申請分配空間,如果空間夠,就直接進行分配,否則進行一次Minor GC。minor GC 首先會對Eden區的對象進行標記,標記出來存活的對象。然後把存活的對象copy到From空間。如果From空間足夠,則回收eden區可回收的對象。如果from內存空間不夠,則把From空間存活的對象複製到To區,如果TO區的內存空間也不夠的話,則把To區存活的對象複製到老年代。如果老年代空間也不夠(或者達到觸發老年年垃圾回收條件的話)則觸發一次full GC。

 jstat命令可以查看堆內存各部分的使用量,以及加載類的數量。命令的格式如下:

 jstat [-命令選項] [vmid] [間隔時間/毫秒] [查詢次數]

 注意!!!:使用的jdk版本是jdk8.

 

  類加載統計:

 

  • Loaded:加載class的數量
  • Bytes:所佔用空間大小
  • Unloaded:未加載數量
  • Bytes:未加載佔用空間
  • Time:時間

 

  編譯統計

 

  • Compiled:編譯數量。
  • Failed:失敗數量
  • Invalid:不可用數量
  • Time:時間
  • FailedType:失敗類型
  • FailedMethod:失敗的方法

 

  垃圾回收統計

 

  • S0C:第一個倖存區的大小
  • S1C:第二個倖存區的大小
  • S0U:第一個倖存區的使用大小
  • S1U:第二個倖存區的使用大小
  • EC:伊甸園區的大小
  • EU:伊甸園區的使用大小
  • OC:老年代大小
  • OU:老年代使用大小
  • MC:方法區大小
  • MU:方法區使用大小
  • CCSC:壓縮類空間大小
  • CCSU:壓縮類空間使用大小
  • YGC:年輕代垃圾回收次數
  • YGCT:年輕代垃圾回收消耗時間
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

 

  堆內存統計

  

  • NGCMN:新生代最小容量
  • NGCMX:新生代最大容量
  • NGC:當前新生代容量
  • S0C:第一個倖存區大小
  • S1C:第二個倖存區的大小
  • EC:伊甸園區的大小
  • OGCMN:老年代最小容量
  • OGCMX:老年代最大容量
  • OGC:當前老年代大小
  • OC:當前老年代大小
  • MCMN:最小元數據容量
  • MCMX:最大元數據容量
  • MC:當前元數據空間大小
  • CCSMN:最小壓縮類空間大小
  • CCSMX:最大壓縮類空間大小
  • CCSC:當前壓縮類空間大小
  • YGC:年輕代gc次數
  • FGC:老年代GC次數

 

  新生代垃圾回收統計

 

  • S0C:第一個倖存區大小
  • S1C:第二個倖存區的大小
  • S0U:第一個倖存區的使用大小
  • S1U:第二個倖存區的使用大小
  • TT:對象在新生代存活的次數
  • MTT:對象在新生代存活的最大次數
  • DSS:期望的倖存區大小
  • EC:伊甸園區的大小
  • EU:伊甸園區的使用大小
  • YGC:年輕代垃圾回收次數
  • YGCT:年輕代垃圾回收消耗時間

 

  新生代內存統計

 

  • NGCMN:新生代最小容量
  • NGCMX:新生代最大容量
  • NGC:當前新生代容量
  • S0CMX:最大幸存1區大小
  • S0C:當前倖存1區大小
  • S1CMX:最大幸存2區大小
  • S1C:當前倖存2區大小
  • ECMX:最大伊甸園區大小
  • EC:當前伊甸園區大小
  • YGC:年輕代垃圾回收次數
  • FGC:老年代回收次數

 

  老年代垃圾回收統計

 

  • MC:方法區大小
  • MU:方法區使用大小
  • CCSC:壓縮類空間大小
  • CCSU:壓縮類空間使用大小
  • OC:老年代大小
  • OU:老年代使用大小
  • YGC:年輕代垃圾回收次數
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

 

 老年代內存統計

 

  • OGCMN:老年代最小容量
  • OGCMX:老年代最大容量
  • OGC:當前老年代大小
  • OC:老年代大小
  • YGC:年輕代垃圾回收次數
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

 

 元數據空間統計

 

  • MCMN: 最小元數據容量
  • MCMX:最大元數據容量
  • MC:當前元數據空間大小
  • CCSMN:最小壓縮類空間大小
  • CCSMX:最大壓縮類空間大小
  • CCSC:當前壓縮類空間大小
  • YGC:年輕代垃圾回收次數
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

 

 總結垃圾回收統計

 

  • S0:倖存1區當前使用比例
  • S1:倖存2區當前使用比例
  • E:伊甸園區使用比例
  • O:老年代使用比例
  • M:元數據區使用比例
  • CCS:壓縮使用比例
  • YGC:年輕代垃圾回收次數
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

 

 JVM編譯方法統計

 

  • Compiled:最近編譯方法的數量
  • Size:最近編譯方法的字節碼數量
  • Type:最近編譯方法的編譯類型。
  • Method:方法名標識。

人一定要靠自己

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章