[JVM工具(1)] 堆棧檢查利器jstat的使用

jstat

  • 能夠檢查 JVM 總體的運行狀況,能夠看到 新生代,老年代等的內存使用狀況,以及GC 次數和耗時
  • 命令格式 如 jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
  • 其中 -option 必選參數表示命令參數 如 gc 等, -t 爲可選參數表示是否打印時間(秒),-h<lines> 可選參數,表示每隔多少行打印頭部列表,如設置 -h 5 , 那麼每五條記錄就會從新打印表頭,vmid 必選參數,Java 進程idinterval 可選參數表示採樣的時間間隔,count 可選參數表示須要採樣多少條,

jstat -gc pid

  • jstat -gc pid 這是最經常使用的語法,能夠直接查看內存和垃圾回收狀況
  • 首先咱們要得到Java 進程的 PID 信息,能夠經過 jps 命令來獲取
  • 以後執行 jstat -gc pid 便可看到對應 Java 進程的內存狀況,以下:

  • 這裏說明一下關於這些列名的含義微信

    • S0C : 新生代中第一個 Survivor (即 From 區)的容量大小 (千字節)
    • S1C : 新生代中第二個 Survivor (即 To 區)的容量大小 (千字節)
    • S0U : 新生代 From Survivor 區已使用內存大小(千字節)
    • S1U : 新生代 To Survivor 區一使用內存大小(千字節)
    • EC : 新生代 Eden 區的容量大小(千字節)
    • EU : 新生代 Eden 區已使用內存大小(千字節)
    • OC : 老年代空間容量大小(千字節)
    • OU : 老年代已使用內存大小(千字節)
    • MC : 方法區的空間大小 (千字節)
    • MU : 方法區已使用的空間大小(千字節)
    • YGC : 從系統啓動到如今 Young GC/Minor GC 的次數
    • YGCT : Young GC 總耗時(秒)
    • FGC :從系統啓動到如今 Full GC 的次數
    • FGCT : Full GC 的總耗時(秒)
    • GCT : 垃圾回收總的耗時(秒)
    • NGCMN :年輕代( young )中初始化(最小)的大小 (千字節)         
    • NGCMX :年輕代( young )的最大容量 (千字節)         
    • GC :年輕代( young )中當前的容量 (千字節)         
    • OGCMNold 代中初始化(最小)的大小 (千字節)         
    • OGCMXold 代的最大容量 (千字節)         
    • OGCold 代當前新生成的容量 (千字節)         
    • PGCMNperm 代中初始化(最小)的大小 (千字節)         
    • PGCMXperm 代的最大容量 (千字節)           
    • PGCperm 代當前新生成的容量 (千字節)         
    • S0 :年輕代中 From survivor (倖存區)已使用的佔當前容量百分比         
    • S1 :年輕代中 To Survivor (倖存區)已使用的佔當前容量百分比         
    • E :年輕代中 Eden (伊甸園)已使用的佔當前容量百分比         
    • Oold 代已使用的佔當前容量百分比         
    • Pperm 代已使用的佔當前容量百分比         
    • S0CMX :年輕代中 From survivor (倖存區)的最大容量 (千字節)         
    • S1CMX :年輕代中 To Survivor (倖存區)的最大容量 (千字節)         
    • ECMX :年輕代中 Eden (伊甸園)的最大容量 (千字節)         
    • DSS :當前須要 survivor (倖存區)的容量 (千字節)( Eden 區已滿)         
    • TT : 持有次數限制         
    • MTT : 最大持有次數限制

jstat -gcutil PID

  • 通常咱們還能夠經過 jstat -gcutil pid 來獲取分代年齡的使用狀況,顯示爲佔比,以下,表頭參考上面

jstat -gccapacity PID

  • -gccapacity 命令主要用來分析堆內存,用法參考上面,以下效果,表頭含義參看上面

其餘一些命令參數

  • jstat -gcnew PID : 年輕代GC 分析,其中 TTMTT 能夠看到對象在年齡代存活的年齡和存活的最大年齡

  • jstat -gcnewcapacity PID : 年輕代內存分析

  • jstat -gcold PID: 老年代 GC 分析

  • jstat -gcoldcapacity: 老年代內存分析

  • jstat -gcmetacapacity PID: 元數據內存分析

jstat -class PID

  • 統計進程中加載的類的數量,以下:

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

jstat -compiler PID

  • 編譯信息的統計命令, 以下命令 jstat -class 15372

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

jstat -printcompilation PID

  • JVM 編譯方法的統計,以下命令 jstat -printcompilation 15372

  • 說明:
Compiled:最近編譯方法的數量
Size:最近編譯方法的字節碼數量
Type:最近編譯方法的編譯類型。
Method:方法名標識。
好了今天就說到這裏, jstat 死一個很是還用的工具,須要平時多使用多分析才能真真掌握,下次咱們接着說相關的工具的使用~🕹🕹🕹🕹

本文由AnonyStar 發佈,可轉載但需聲明原文出處。
歡迎關注微信公帳號 :雲棲簡碼 獲取更多優質文章
更多文章關注筆者博客 : 雲棲簡碼 i-code.online
相關文章
相關標籤/搜索