Java 應用日益複雜,軟體堆疊層層疊加(WebSphere、中介軟體、應用層),GB 級堆、數百執行緒、數萬類別、海量物件,手動分析系統轉儲極其耗時且專業門檻高。IBM Dump Analyzer 提供可擴展框架,自動化分析格式化系統轉儲,產出簡明報告指導後續行動,降低對外部專家依賴。
| 故障類型 | 成因 | 診斷難點 |
|---|---|---|
| 記憶體不足 | Java 堆/本地記憶體耗盡(執行緒堆疊、類資訊、JIT 代碼、OS 交互) | 分配觸發點非禍首,需對比不同時期堆快照找出快速增長集合 |
| 死結 | 多執行緒循環等待資源(監視器) | 相對容易:檢查執行緒狀態與持有資源 |
| 內部錯誤 | 本地代碼無效存取、GC 錯誤回收、JIT 生成錯誤代碼 | 需深入 VM 內部狀態 |
| 應用/中介軟體錯誤 | 代碼缺陷、JVM 選項配置錯誤 | 檢查應用層資料結構狀態 |
依賴專用工具分別檢查:系統轉儲、Java 堆轉儲、Javacore、追蹤檔。手動關聯資訊、專業度要求高、客戶多轉向廠商支援,但大多數最終診斷為應用/配置/環境問題,非 VM 代碼缺陷。理想狀態:自動化診斷過濾非代碼問題,僅真正缺陷回報廠商。
簡單腳本語言串聯分析模組,預設腳本 general.sml 檢查常見問題類型,無發現則產出通用 VM 狀態報告。未來將擴充更多專用腳本。
系統轉儲需經 jextract 處理添加執行時資訊:
jextract "corefilename"。.sdff,Java 5.0+ 產生 .dmp.zip。ulimit unlimited 避免轉儲截斷,其他平台參考 IBM 診斷指南。Optional Parameters 欄位控制執行模組集合(空白=預設腳本)。可指定腳本檔名或分析器類別名。輸入 -help 列出完整選項。內建試驗模組:
DefaultDumpReport:VM 狀態詳細報告(類 Javacore 含 DTFJ 專屬資訊)。ListZipJars:掃描 VM 開啟的 ZIP/JAR 檔,洞察自定義庫。SystemProperties:列印所有 Java 系統屬性當前值。WASBasicInfo:初階 WebSphere 執行時狀態檢查示範。第四篇將詳細講解自訂分析模組開發。
需 4 JAR + general.sml:
set CP=WEB-INF/lib/dumpAnalyzer.jar set BCP=WEB-INF/lib/j9/dtfj.jar;WEB-INF/lib/j9/dtfj-interface.jar;WEB-INF/lib/sov/dtfj.jar java -cp %CP% -Xbootclasspath/p:%BCP% com.ibm.dtfj.analyzer.base.DumpAnalyzer<選項>
Linux 同理用 export。-help 列出所有參數。圖 3 為命令列輸出範例。
Diagnostic Tooling Framework for Java (DTFJ) 為分析 API,支援檢查 jextract 處理後的系統轉儲。核心流程:
Dump Analyzer 為 Java 診斷奠定自動化基石。下一篇介紹 Extensible Verbose Toolkit (EVTK) 分析詳細 GC 日誌優化記憶體效能;第四篇深入 Dump Analyzer 擴展開發,教您構建專屬分析模組。四大工具結合,全方位提升 Java 應用穩定度與效能。