성능과 튜닝/JVM

Out Of Memory에 대한 대처 방안

조대협 2007. 10. 8. 16:53
OOM은 Java AP의 아주 골치 아픈 오류이기도 하면서 가장 추적하기 어려운 문제이기도 하다.
1. 추적에 대한 가장 전통적인 방법은 IBM AIX JVM의 Heap Dump를 사용하는 방식이었다.
2. 현재는 HP JVM에서 Heap Dump를 generate해주고, 이를 AMI2나, JMeter를 사용해서 분석이 가능하며
3. JVM 1.5,1.6서는 Sun에서도 Heap Dump 추출이 가능하고 jhat이라는 유틸리티로 분석이 가능하다. 또는 jmap이라는 (pmap)과 같은 유틸리티를 사용해서 heap dump를 추출할 수 도 있다.

* 1.6에 포함된 JHat
http://java.sun.com/javase/6/docs/technotes/tools/share/jhat.html

* JHat 프로젝트
https://hat.dev.java.net/
사용법
http://java.sun.com/javase/6/webnotes/trouble/TSG-VM/html/gblfj.html
직접 쿼리를 이용해서 추적해야 하기 때문에 다소 복잡할 수 는 있으나 익숙해지만 정말 파워풀한 도구

* remote로 heap dump를 추출하는 유틸리티
https://hat.dev.java.net/misc/net_dumper/README.html

* jmap을 이용한 Heap dump 추출
jmap -dump:format=b,file=snapshot2.jmap PID_OF_PROCESS
jhat snapshot2.jmap

http://weblogs.java.net/blog/kellyohair/archive/2005/09/heap_dump_snaps.html

'성능과 튜닝 > JVM' 카테고리의 다른 글

Sun JVM HeapDump 얻기  (1) 2007.11.28
-XX:PretenureSizeThreshold  (0) 2007.11.10
JVM 튜닝 옵션 정리  (0) 2007.10.08
JDK 1.5 BCI (Byte Code Instrumentation)  (0) 2007.09.11
Sun JVM 튜토리얼  (0) 2007.08.27