MemoryAnalyzer、HeapAnalyzer
2010. 7. 12. 11:07ㆍ99. 정리전 - IT/13. Unix 얇팍지식
1. HeapAnalyzer
IBM에서 아마도 한국사람이 개발한 로그분석툴인듯...
요놈 실행법
java -jar -Xmx1434m ha.jar
하지만 힙덤프 파일인 java_pid7464.hprof 요놈의 크기가 1기가가 넘어갈 경우
아무리 Xmx사이즈를 최대한 줘도
툴 자체에서 OOM 에러를 내뿜는 아주 웃기지도 않는 현상이 일어나므로
이클립스 플러그인으로 제작된 툴을 사용하면 무리없이 분석이 된다.
아래의 툴은 1.4.2이상에서 굴러가네요.
2. MemoryAnalyzer
강력한 힙 덤프 분석기라고들 하는데
사실 사용법이 어렵다.
간단하게 소개한다.
사이트에 가서 독립버전을 받는다.
힙 덤프를 생성하는 법은 다른 사이트를 참조하세요
Java프로그램 퍼포먼스업과 OutOfMemoryError 열외 대책
- プログラムが使用するメモリ量を拡張する
- javaプログラムの起動時に使用するメモリー量の初期ヒープサイズ(-Xms)、最大ヒープサイズ(-Xmx)、
New世代領域サイズ(-Xmn)を指定します。以下が入力例ですが200mのように数字の後ろについているmはメガを意味します。私の場合、かなり負荷
の高い最適化でも以下の設定であれば快適に動きます。
C:\>java -Xmn200m -Xms400m -Xmx400m jp.robotbrain.apps.SignalBoxEditor - 「Eclipse Memory Analyzer」でメモリの開放漏れ(メモリリーク)の調査をする
-
- 「Eclipse Memory Analyzer」を入手してインストールする
以下のページで該当OSのファイル をダウンロードします。
http://www.eclipse.org/mat/downloads.php - ダウンロードしたファイルを解凍します。解凍してできたフォルダの中にある 「MemoryAnalyzer.exe」を起動します。
- ヒープダンプを作成します。まず調査したいJavaプログラムを実行し、プロセスIDをコマンドプロンプト
(Linuxであれば端末)でjpsコマンドを打って調べます。jpsコマンドはJDKをインストールしたフォルダの中のbinフォルダに入っていますの
で、PATHが通っていなければ通します。以下のようにプロセスIDの一覧が表示されます。
C:\>jps
3756 jps
3904 OptimizeEvolutionary
C:\>jmap -dump:format=b,file=c:\work\jmap\heap.bin 3904 - 요부분 부터 툴의 간단한 사용법입니다. 대충 번역했기 때문에 그냥 이렇게 하는구나 정도만 알아두심이「Eclipse Memory Analyzer」를 기동한다.「File」→「Open Heap Dump...」를 선택하고 덤프를 연다.
- 다이얼로그가 표시되면 「Leak Suspects Report」를 선택하고「Finish」버튼을 클릭.
- 「Open Dominator Tree」버튼을 클릭!
- 리스트가 나오면「Retained
Heap」를 클릭하고 소비가 큰 오브젝가 위로 정렬되게 누르고, 소비가 큰 오브젝트의 트리를 전개해 나간다. 아래의 예제는
「java.lang.Thread」가 커서 열어 봤더니, 「jp.robotbrain.simulation.OptimizeEvolutionary」라는 클래스가 메모리를 잡아먹고 있었다는 이야기. 이 부분을 메모리 확보에 중점을 두어 확인한다.
- 「Eclipse Memory Analyzer」を入手してインストールする