728x90
반응형
SMALL
heap dump 생성 및 분석
1. 샘플 파일 생성(OutOfMemoryExample.java)
import java.util.ArrayList; import java.util.List; public class OutOfMemoryExample { public static void main(String[] args) { List<Object> memoryLeak = new ArrayList<>(); while (true) { memoryLeak.add(new Object()); // Continuously adding objects to the list } } } |
2. 컴파일(OutOfMemoryExample.class 생성)
javac OutOfMemoryExample.java |
3. 실행
java -cp D:\heap_dump -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\heap_dump -Xmx50m OutOfMemoryExample -> 클래스가 패키지가 없을 시 클래스 경로 명시(-cp D:\heap_dump) D:\heap_dump>java -cp D:\heap_dump -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\heap_dump -Xmx50m OutOfMemoryExample java.lang.OutOfMemoryError: Java heap space Dumping heap to D:\heap_dump\java_pid23596.hprof ... Heap dump file created [61431119 bytes in 0.084 secs] Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3210) at java.util.Arrays.copyOf(Arrays.java:3181) at java.util.ArrayList.grow(ArrayList.java:267) at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:241) at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:233) at java.util.ArrayList.add(ArrayList.java:464) at OutOfMemoryExample.main(OutOfMemoryExample.java:8) |
4. 결과(heap dump 파일 생성(58.5MB))
java_pid23596.hprof ![]() |
5. 메모리 분석기(MAT(Memory Analyzer Tool))
-. MAT 다운로드 경로 : https://eclipse.dev/mat/
-. JDK 다운로드 경로 : https://www.openlogic.com/openjdk-downloads
-. 분석 결과
- Java_id23596.hprof 파일을 MAT에서 Open

- Leak Suspects 리포트 확인
- 메모리 영역에 98.7% 차지하는 Object[]가 쌓여 있는 것 확인

- Dominator Tree를 확인해 보면 Object[1823230]가 생성되었는 것을 확인할 수 있다

- Stack Trace를 통해서 에러가 발생하는 시점을 확인할 수 있다

Out Of Memory 분석 방법.docx
0.16MB
728x90
반응형
LIST
'JAVA' 카테고리의 다른 글
[Class 파일] class명에 $는 뭘까요? (2) | 2024.10.07 |
---|---|
[JDK] OpenJDK와 OracleJDK는 어떻게 다른가? (4) | 2024.10.06 |
[JVM] Java Virtual Machine (0) | 2024.09.22 |
[OOM] Out Of Memory 분석 방법(with JProfiler(유료)) (2) | 2024.09.22 |
[OOM] Out Of Memory 분석 방법(with VisualVM) (0) | 2024.09.22 |