jvm-44-jvm 記憶體效能分析工具 Eclipse Memory Analyzer Tool (MAT) / 記憶體分析器 (MAT)

老马啸西风發表於2024-11-28

擴充閱讀

JVM FULL GC 生產問題 I-多執行緒通用實現

JVM FULL GC 生產問題 II-如何定位記憶體洩露? 執行緒通用實現

JVM FULL GC 生產問題 III-多執行緒執行佇列的封裝實現,進一步抽象

jvm-44-jvm 記憶體效能分析工具 Eclipse Memory Analyzer Tool (MAT) / 記憶體分析器 (MAT)

jvm-45-jvm dump 檔案記憶體介紹+獲取方式+堆記憶體可視分析化工具

jvm-46-jvm Thread Dump 執行緒的堆疊跟蹤資訊+獲取方式+可視分析化工具 FastThread

jvm-47-jvm GC 垃圾回收日誌+獲取方式+可視分析化工具 gcviewer

jvisualvm java 效能分析工具

場景

JVM DUMP 檔案應該如何分析?

MAT 是什麼?

Eclipse Memory Analyzer Tool (MAT) 是一個強大的 Java 堆記憶體分析工具,常用於分析 Java 記憶體轉儲(heap dump),幫助開發者找到記憶體洩漏、檢查大物件等問題。以下是對 MAT 的詳細介紹,包括其核心功能、使用場景以及分析步驟。

1. MAT 的核心功能

  • 查詢記憶體洩漏:MAT 透過分析 heap dump,可以幫助發現潛在的記憶體洩漏點,特別是無法被垃圾回收的物件。
  • 識別大物件:MAT 可以快速識別佔用大量記憶體的物件及其引用路徑,幫助最佳化應用程式的記憶體使用。
  • 分析物件保留集:透過計算每個物件的保留大小(retained size),MAT 可以幫助確定哪些物件或物件樹最為消耗記憶體。
  • 生成報告:MAT 可以自動生成問題分析報告,給出可能的記憶體洩漏或物件過大等問題的總結,並提供詳細的建議。

2. 常見使用場景

  • 記憶體洩漏排查:在應用程式出現 OutOfMemoryError 錯誤或記憶體消耗異常時,MAT 是分析堆轉儲、查詢洩漏原因的利器。
  • 最佳化記憶體使用:MAT 能幫助你識別記憶體使用的熱點物件,幫助改進程式碼以減少記憶體消耗。
  • 分析應用的生命週期記憶體模式:瞭解應用程式的記憶體分配情況,幫助開發者最佳化物件的生命週期管理,避免記憶體問題。
  • 除錯記憶體洩漏測試:在模擬壓力測試或效能測試時,可以生成 heap dump 並使用 MAT 來確定記憶體使用的瓶頸。

下載

2024 年 5 月 8 日,Memory Analyzer 遷移至 Github

Memory Analyzer 的程式碼庫已從 Eclipse Git 伺服器遷移至 Github:https://github.com/eclipse-mat/mat。

MAT vs JVisualVM

個人比較喜歡實用 mat,非常直觀強大。

功能 MAT JVisualVM
實時監控 不支援實時監控,只分析堆轉儲 支援實時監控 JVM 效能,包括 CPU、記憶體、執行緒、GC 活動等
堆轉儲分析 強大的堆轉儲分析能力,支援深入分析 支援堆轉儲分析,但功能不如 MAT 詳細
記憶體洩漏檢測 自動生成記憶體洩漏嫌疑報告,提供深入的保留集分析 提供基礎的記憶體洩漏分析
執行緒分析 不支援執行緒分析 支援實時執行緒分析和執行緒 dump
GC 分析 不支援 GC 分析 提供基本的 GC 活動監控
物件引用鏈分析 支援詳細的物件引用鏈分析、保留大小等 提供基本的物件引用分析
OQL 查詢 支援 OQL(Object Query Language) 不支援 OQL
效能調優 不適合效能調優,專注於記憶體分析 支援實時效能調優

相關文章