JVM Option - http://java.sun.com/docs/hotspot/VMOptions.html
Sun GC option (build 1.4.2_18-b06 에서 Test)
-Xms64m : 최소 heap size
-Xmx256m : 최대 heap size
-XX:PermSize=64m : 최소 perm size
-XX:MaxPermSize=64m : 최대 perm size
heap dump option
-XX:+HeapDumpOnOutOfMemoryError : OOM시 HeapDumpPath로 dump file 생성
EX)
java.lang.OutOfMemoryError: Java heap space
Dumping heap to /home/java/Test/heap/java_pid18244.hprof ...
Heap dump file created [168141330 bytes in 36.717 secs]
Exception in thread "main" java.lang.OutOfMemoryError
drwxrwxr-x 2 java java 4.0K 1월 24 00:02 .
drwxrwxr-x 3 java java 4.0K 1월 24 00:01 ..
-rw------- 1 java java 161M 1월 24 00:03 java_pid18244.hprof
-XX:HeapDumpPath=/home/java/javaP1.hprof : kill -3 으로 남길경우 path 안먹힘. 대신 실제 OOM 발생시 먹힘.
-XX:+HeapDumpOnCtrlBreak : kill -3시 heap dump file 생성 및 thread dump 화면 출력(java_pid18176.hprof.1232737116504)
Heap Size Parameters (기본값)
-XX:MinHeapFreeRatio=40
-XX:MaxHeapFreeRatio=70
-Xms3670k
-Xmx64m
Young Generation
-XX:NewRatio=3 - young and tenured generation is 1:3
-XX:NewSize10m
-XX:MaxNewSize20m
-XX:SurvivorRatio=6 - "eden:s1:s2 = 6:1:1" 그러므로 "s1:young영역 = 1:8"
-XX:+PrintTenuringDistribution - tenured 영역으로 카피되기 전까지의 new 영역에서의 threshold와 object age를 보여준다.
기본값 :
-XX:NewRatio=2 (client JVM: 8)
-XX:NewSize 2228k
-XX:MaxNewSize unlimited
-XX:SurvivorRatio=32
New Generation 메모리 할당 공식
Eden = NewSize - ((NewSize/(SurvivorRatio + 2)) * 2)
From space = (NewSize - Eden)/2
To space = (NewSize - Eden)/2
Old Generation 메모리 할당 공식
Old = Xmx - MaxNewSize
Sun heap dump 분석툴 :
http://www.eclipse.org/mat/
jhat
???
- thread dump를 file로 남기는 방법이 있는가?
'Java' 카테고리의 다른 글
Java에서 외부 프로그램 실행 (0) | 2009.08.26 |
---|---|
SimpleDateFormat -> FastDateFormat (1) | 2009.06.29 |
용어 설명 (0) | 2009.02.23 |
jconsole test - (sun jdk 1.5) (0) | 2009.02.23 |
JVM 기타 (0) | 2009.01.30 |
Sun JVM Monitoring (0) | 2009.01.30 |
JVM spec (0) | 2009.01.30 |
SUN JDK 1.4.2, 1.5 GC Option (0) | 2009.01.30 |