준비할 목적
OOME가 난 뒤 자료를 찾기 시작하면 process 종료와 함께 중요한 상태를 잃을 수 있습니다. 서비스가 다루는 memory 영역과 container 한도를 먼저 적고, 민감정보와 disk 여유를 고려해 수집 위치와 보존 기간을 정합니다.
알아둘 사실
OutOfMemoryError는 Java heap 부족뿐 아니라 Metaspace·direct buffer 같은 메모리 자원이나 native allocation 실패에서도 발생할 수 있으므로, detail message를 실제로 고갈된 자원과 연결해 확인해야 합니다.
heap 자료 준비
-XX:+HeapDumpOnOutOfMemoryError는 Java heap 고갈로 발생한 OOME의 heap dump를 남기는 옵션입니다. 모든 종류의 OOME를 설명하는 자료는 아니며 dump에는 사용자 데이터가 포함될 수 있습니다. 저장 공간, 접근 권한과 반출 절차를 함께 준비합니다.
native memory와 thread 자료 준비
Native Memory Tracking은 시작 시 활성화해야 하며 JVM 내부 native allocation을 분류하지만 JNI 등 JVM 밖의 모든 native allocation을 추적하지는 않습니다. 주기적인 RSS·thread 수, JVM 옵션과 container limit을 함께 남겨야 jcmd VM.native_memory 결과와 OS 관측을 연결할 수 있습니다.
공식 문서와 적용 범위
- Oracle Java 26: Troubleshoot Memory Leaks (새 창에서 열림)
- Oracle Java 26: OutOfMemoryError API (새 창에서 열림)
현재 JDK/JVM version, 실행 옵션, collector, container 제한과 실제 memory 사용 패턴에서 다시 확인합니다.