2012年11月19日月曜日

How to use Eclipse Memory Analyzer

概要

Webサイト
http://www.eclipse.org/mat/

使用方法

  1. Heapダンプの出力


Heapダンプの出力

EMAのヘルプを見るとHeapダンプを出力する方法としては以下のものがあるようだ。

  • VM Parameter
    • On out of memory
    • On Ctrl + Break
    • Agent
  • Sun Tools
    • JMap
    • JConsole
  • SAP Tooltable of vm vendors and vm parameters to be used

 Heapダンプの種類 使用方法
VM Parameter 
Javaアプリケーション起動時に"-vmargs"をつける
    On out of memory
VM Paramterに"-XX:+HeapDumpOnOutOfMemoryError"を付与して実行する。
OutOfMemoryErrorが発生したときに作業ディレクトリにダンプファイルが出力される。
    On Ctrl + Break
VM Parameterに"-XX:+HeapDumpOnCtrlBreak"を付与して実行する。
Ctrl + Breakを行ったときに作業ディレクトリにダンプファイルが出力される。
    Agent
 
Sun Tools
 
    JMap
 
    JConsole
"${JDK_HOMDE}/bin/jconsole.exe"で起動する。
解析対象となるJavaプロセスに接続した後、"MBeans"タブの"com.sun.management" > "HotSpotDiagnostic" > "Operations" > "dumpHeap"を選択し、"dumpHeap"ボタンを押下するとp0で指定されたファイルにHeapダンプが出力される。
SAP Tool
 


以下はEMAのヘルプから抜粋したものでVender、VersionごとのJavaVMに対する各種Heapダンプツールのサポート状況です。

 Vender / Release VM Parameter      Sun Tools    SAP Tool 

On out of memory 
On Ctrl+Break
Agent 
JMap 
JConsole 
JVMMon 
Sun, HP
           
    1.4.2_12 Yes 
Yes 
Yes 
   
    1.5.0_07 Yes   Yes
Yes (Only Solaris and Linux) 
   
    1.6.0_00 Yes 

Yes 
Yes Yes (Not working with Java AS)
 
SAP
 
   
    Any 1.5.0
Yes 
Yes 
Yes 
Yes (Only Solaris and Linux) 
  Yes 

今回はSunのJDK 1.6 + "VM Parameter"の"On out of memory"で行う(表のピンクのセル)。

-XX:+HeapDumpOnOutOfMemoryError

Heapダンプファイルの解析

Overview

"Overview"
    Details
        Size
        Classes
        Objects
        Class Loader
    Biggest Objects by Retained Size

"Inspector" view

Histogram

クラスごとのインスタンス数、Shallow Heapサイズ、保有Heapサイズを一覧で表示。

"Class Name"
"Objects" : オブジェクト数
"Shallow Heap" : 
"Retained Heap" : 

Dominator Tree

0 件のコメント:

コメントを投稿