| 類別 | 關鍵指標 | 意義 |
|---|---|---|
| JIT 編譯 | 編譯次數、累計耗時 | 熱點代碼優化開銷 |
| 類加載 | 加載/卸載數量、耗時 | 類加載器行為、洩漏排查 |
| 堆內存 | 已用/空閒大小 | 內存洩漏最直觀信號 |
| 垃圾收集 | 頻率、耗時、分代分佈 | 應用停頓來源、調優方向 |
java -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps MyApp
# 輸出範例
[GC 70333K->65666K(98896K), 0.0007817 secs]
[Full GC 65666K->59333K(98896K), 0.0205250 secs]
jps 列出 Java 進程 ID (LVMI)。visualgc <lvmid> 或 java -Xbootclasspath/p:$JAVA_HOME/lib/tools.jar -jar $JVMSTAT_HOME/jars/visualgc.jar <lvmid>。

-server 模式啟動:類加載多、JIT 少、啟動慢但吞吐高,適合生產。
public class StatGen {
static final int MAX_BLOCK = 8*1024*100;
public static void main(String[] args) {
int loops = args.length > 0 ? Integer.parseInt(args[0]) : 1;
List<long[]> list = new ArrayList<>();
for (int i=0; i<loops; i++) {
int sz = (int)(Math.random()*MAX_BLOCK);
long[] arr = new long[sz];
if (sz % 5 == 0) list.add(arr); // 模擬 20% 洩漏
Thread.sleep(500);
}
}
}
運行 java StatGen 100,配合不同 -Xms/Xmx、GC 算法觀察 Visual GC 變化,快速建立直覺。
JVM 統計信息是調優利器。jvmstat/Visual GC 提供可視化洞察,結合命令行參數實驗,能快速定位內存洩漏、GC 停頓、類加載異常等問題。Geronimo 目標高性能,JVM 監控是不可或缺的補充手段。