VM 분석 : Chapter 1 Performance - 2 / HAT

HAT(The Heap Analysis Tool)
HAT은 java의 비표준 옵션인 –Xrunhprof 로 분석된 바이너리 형태의 데이터를 분석하여 웹브라우져로 보여주는 기능을 가진다.

HAT의 설치와 실행
1. https://hat.dev.java.net/ 에서 HAT의 최신 버전을 다운 받는다.
2. 다운받은 파일을 압축을 풀고 [HAT_HOME]bin 디렉토리를 PATH에 추가한다.
3. java -Xrunhprof:file=dump.hprof,format=b whileUnit 와 같이 -Xrunhprof옵션에 format=b 을 추가하여 바이너리 형태로 분석 파일을 생성한다.
4. dump.hprof 파일을 [HAT_HOME]bin 디렉토리로 복사한다.(필자는 HAT을 PATH에 추가하지 않아서 이렇게 했습니다.)
5. hat -port=7002 dump.hprof 명령어를 실행한다.
6. 브라우져를 실행하여 http://localhost:7002 을 들어간다.
분석내용을 보면 먼가 아쉬운 점이 많이 느껴진다. 향후 버전에서는 더 많은 기능을 지원하기를 기대한다.
JAVA 6에는 jhat이라는 이름으로 JDK에 포함되어 있습니다.

jhat [ options ] <heap-dump-file>
Java binary heap dump file to be browsed. For a dump file that contains multiple heap dumps, you may specify which dump in the file by appending "#<number> to the file name, i.e. "foo.hprof#3".

-stack false/true
Turn off tracking object allocation call stack. Note that if allocation site information is not available in the heap dump, you have to set this flag to false. Default is true.
-refs false/true
Turn off tracking of references to objects. Default is true. By default, back pointers (objects pointing to a given object a.k.a referrers or in-coming references) are calculated for all objects in the heap.
-port port-number
Set the port for the jhat's HTTP server. Default is 7000.
-exclude exclude-file
Specify a file that lists data members that should be excluded from the "reachable objects" query. For example, if the file lists java.lang.String.value, then, whenever list of objects reachable from a specific object "o" are calculated, reference paths involving java.lang.String.value field will not considered.
-baseline baseline-dump-file
Specify a baseline heap dump. Objects in both heap dumps with the same object ID will be marked as not being "new". Other objects will be marked as "new". This is useful while comparing two different heap dumps.
-debug int
Set debug level for this tool. 0 means no debug output. Set higher values for more verbose modes.
Report version number and exit.
Output help message and exit.
Output help message and exit.
Pass <flag> to the Java virtual machine on which jhat is run. For example, -J-Xmx512m to use a maximum heap size of 512MB.


이 블로그의 인기 게시물

Android Service에서 AlertDialog 띄우기

MongoDB, 설치와 간단 사용법

Android Thread 내에서 UI 핸들링