VPA (Visual Performance Analyzer) 是基於 Eclipse 的視覺化效能分析工具集,整合六大分析器:Profile Analyzer、Call Tree Analyzer、Code Analyzer、Pipeline Analyzer、Counter Analyzer、Trace Analyzer。針對 Java 應用,最常用的是前兩者。
| 工具 | 資料來源 | 適用問題 | 額外開銷 |
|---|---|---|---|
| Profile Analyzer | 抽樣採樣 | CPU 100%、熱點方法、執行緒爭用 | 極低 (週期性中斷) |
| Call Tree Analyzer | 方法呼叫追蹤 | IO 等待、特定流程耗時、呼叫堆疊分析 | 較高 (完整記錄呼叫) |
AWT GUI 程式,兩大效能問題:
> cd /d c:\ibmperf\bin
> setrunenv
run.tprofjava -Xjit:enableJVMPILineNumbers -Xrunjprof:tprof,fnm=C:\ibmperf\bin\log,pidx -jar bookstore.jarmergetprof 合併程式碼行資訊。tprof_e.out 供 VPA 開啟。java -Xrunjprof:callflow,raw_cycles,start -jar bookstore.jarlog-rt.xxx,重命名為 log-rt.xxx.jprof。tprof_e.out → 自動啟動 Profile Analyzer。JITCODE 模組佔比最高,BestAuthor$1.valueChanged 方法 Ticks 最多。log-rt.xxx.jprof → 自動啟動 Call Tree Analyzer。RAW_CYCLES 欄排序,找出自我耗時最長的方法。BookReader.startElement 佔比極高。startElement 邏輯過重 → 改用 StAX/拉式解析或預先索引。valueChanged 事件處理迴圈 → 減少重複計算、引入快取或異步處理。-Xjit:enableJVMPILineNumbers 讓抽樣精確到行。VPA 結合抽樣與追蹤雙模式,配合豐富視圖,能在百萬行程式碼中分鐘級定位效能瓶頸,是 Java 效能調優必備利器。