jmap 명령어를 이용항 heap dump 파일 생성하기
JVM의 Heap 메모리 정보 확인 및 Heap dump를 생성하는 명령어
Unix/Linux의 경우 kill -3 <PID> 명령어를 이용하여 JVM의 Heap dump 생성이 가능하지만 Windows의 경우 서비스로 기동되어 있을 경우 command console이 없어 thread dump 및 Heap dump 생성이 어려움
이럴 경우 jmap 명령어를 활용하여 Heap dump를 생성할 수 있다.
- 필요한 환경
1. UNIX / Linux / Windows : JAVA 6 이상
- 명령어 위치 ( JAVA_HOME은 JDK 설치 폴더를 의미함)
$JAVA_HOME/bin/jmap.exe
- 명령어 사용법
> jps -v
... JVM의 PID를 확인 ...
heapdump 파일 생성
> jmap -dump:format=b,file=<파일명> <PID>
실시간 heap 메모리 사용 정보 확인
> jmap -heap <PID>
예시)
> jps -v
4360 jar -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m -XX:NewSize=128m
> jmap -dump:format=b,file=heapdump.hprof 4360
..
>jmap -heap 4360
Attaching to process ID 4360, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.51-b03
using thread-local object allocation.
Parallel GC with 4 thread(s)
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 536870912 (512.0MB)
NewSize = 134217728 (128.0MB)
MaxNewSize = 134217728 (128.0MB)
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 21757952 (20.75MB)
MaxPermSize = 85983232 (82.0MB)
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 108003328 (103.0MB)
used = 48275768 (46.03936004638672MB)
free = 59727560 (56.96063995361328MB)
44.69840781202594% used
From Space:
capacity = 13107200 (12.5MB)
used = 13084416 (12.478271484375MB)
free = 22784 (0.021728515625MB)
99.826171875% used
To Space:
capacity = 13107200 (12.5MB)
used = 0 (0.0MB)
free = 13107200 (12.5MB)
0.0% used
PS Old Generation
capacity = 402653184 (384.0MB)
used = 4650336 (4.434906005859375MB)
free = 398002848 (379.5650939941406MB)
1.154923439025879% used
PS Perm Generation
capacity = 25690112 (24.5MB)
used = 25371360 (24.196014404296875MB)
free = 318752 (0.303985595703125MB)
98.75924246651786% used
13893 interned Strings occupying 1218656 bytes.
by 이환호
정보 출처 : http://docs.oracle.com/javase/6/docs/technotes/tools/index.html#basic