【JVM】jstat 教學 jstat 是 Java 提供的另一個工具,用於監控 Java 虛擬機(JVM)內存和垃圾回收狀況。這個工具對於監測和診斷 JVM 性能表現十分有用,特別是在優化內存使用和了解垃圾回收行為方面。以下是  jstat 的使用方式和一些常見的選項。 基本用法 jstat 的基本語法如下: jstat [option] [interval] [count] option:選擇要查看的統計信息類型。 pid:要監控的 Java 進程的進程 ID(可以用  jps 查找)。 interval(可選):更新統計信息的間隔時間(以毫秒為單位)。 count(可選):輸出更新的次數。 常見選項 jstat -gc :顯示 JVM 垃圾回收相關的統計信息。 jstat -gc 1000 5 這會每隔 1000 毫秒(1 秒)更新一次垃圾回收的數據,共更新 5 次。輸出內容包含各個垃圾回收區的大小、使用情況,以及 YGC(年輕代垃圾回收)和 FGC(老年代垃圾回收)的次數等。 輸出示例: S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 512.0 512.0 0.0 0.0 4352.0 1234.0 10240.0 5678.0 2560.0 1900.5 224.0 150.0 5 0.345 1 0.654 1.0 各列解釋: S0C,  S1C:第 0、1 Survivor 空間的容量(KB)。 S0U,  S1U:第 0、1 Survivor 空間的使用量(KB)。 EC,  EU:Eden 空間的容量和使用量。 OC,  OU:Old 空間的容量和使用量。 MC,  MU:元數據空間(Metaspace)的容量和使用量。 CCSC,  CCSU:壓縮類空間的容量和使用量。 YGC,  YGCT:年輕代 GC 的次數及時間。 FGC,  FGCT:老年代 GC 的次數及時間。 GCT:總 GC 時間。 jstat -gcutil :顯示垃圾回收區的使用百分比。 jstat -gcutil 1000 5 這會顯示各個區域使用率的百分比,方便快速查看內存使用情況。 jstat -class :顯示加載類的統計數據。 jstat -class 1000 5 這會顯示 JVM 中類的加載數量、總字節數、卸載數量等。 jstat -compiler :顯示 JIT 編譯器的統計信息。 jstat -compiler 1000 5 這會顯示 JIT 編譯的次數和時間,有助於了解編譯行為的情況。 實用範例 查看特定進程的垃圾回收行為: jstat -gc 12345 2000 每隔 2 秒(2000 毫秒)更新一次數據,直到手動中斷。 查看特定進程的內存區域使用率百分比: jstat -gcutil 12345 500 10 每隔 0.5 秒更新一次,共更新 10 次。 小結 jstat 是一個高效且簡單的工具,可以讓開發者和運維人員更深入地了解 JVM 的內存使用和垃圾回收情況。在診斷性能瓶頸和內存相關問題時, jstat 是不可或缺的工具。