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」でメモリの開放漏れ(メモリリーク)の調査をする
  1. 「Eclipse Memory Analyzer」を入手してインストールする
    以下のページで該当OSのファイル をダウンロードします。
    http://www.eclipse.org/mat/downloads.php
  2. ダウンロードしたファイルを解凍します。解凍してできたフォルダの中にある 「MemoryAnalyzer.exe」を起動します。
  3. ヒープダンプを作成します。まず調査したいJavaプログラムを実行し、プロセスIDをコマンドプロンプト (Linuxであれば端末)でjpsコマンドを打って調べます。jpsコマンドはJDKをインストールしたフォルダの中のbinフォルダに入っていますの で、PATHが通っていなければ通します。以下のようにプロセスIDの一覧が表示されます。
    C:\>jps
    3756 jps
    3904 OptimizeEvolutionary
    次にjmapコマンド(これもJDKのbinフォルダにあります)でヒープダンプを作成します。上記のOptimizeEvolutionaryプログラ ムのダンプを「c:\work\jmap\heap.bin」に作成する場合は以下のようなコマンドになります。 最後のパラメータに上記で調べたプロセスIDを入力します。
    C:\>jmap -dump:format=b,file=c:\work\jmap\heap.bin 3904
  4. 요부분 부터 툴의 간단한 사용법입니다. 대충 번역했기 때문에 그냥 이렇게 하는구나 정도만 알아두심이「Eclipse Memory Analyzer」를 기동한다.「File」→「Open Heap Dump...」를 선택하고 덤프를 연다.
  5. 다이얼로그가 표시되면 「Leak Suspects Report」를 선택하고「Finish」버튼을 클릭.
  6. 「Open Dominator Tree」버튼을 클릭!
  7. 리스트가 나오면「Retained Heap」를 클릭하고 소비가 큰 오브젝가 위로 정렬되게 누르고, 소비가 큰 오브젝트의 트리를 전개해 나간다. 아래의 예제는 「java.lang.Thread」가 커서 열어 봤더니, 「jp.robotbrain.simulation.OptimizeEvolutionary」라는 클래스가 메모리를 잡아먹고 있었다는 이야기. 이 부분을 메모리 확보에 중점을 두어 확인한다.


+ Recent posts