728x90
Heap Dump vs Thread Dump: 핵심 차이점
두 가지는 JVM 진단을 위한 서로 다른 목적의 도구입니다. 과도한 액티브 상태 누적 문제를 해결할 때는 Thread Dump가 우선이며, 메모리 문제가 의심될 때 Heap Dump를 사용합니다.
Thread Dump (스레드 덤프)
목적: 실행 중인 모든 스레드의 순간 상태와 호출 스택을 캡처합니다.
특징:
-
파일 크기: 작음 (수 KB~수 MB)
-
생성 시간: 1초 이내, 애플리케이션 거의 중단 없음
-
분석 도구: jstack, jcmd, kill -3
-
주요 내용:
-
각 스레드의 현재 상태 (RUNNABLE, BLOCKED, WAITING, TIMED_WAITING)
-
메서드 호출 스택 (어떤 코드를 실행 중인지)
-
Lock 정보 (어떤 자원을 대기 중인지)
-
스레드 이름과 ID
-
사용 시점 (귀하의 상황에 해당):
-
화면을 닫아도 액티브 상태가 유지되는 경우
-
응답 지연 또는 멈춤 현상 발생 시
-
데드락(deadlock) 의심 시
-
5초 간격으로 3~5회 연속 수집하여 어떤 스레드가 멈췄는지 추적
분석 포인트:
java
Copy
// 스레드 덤프 예시
"http-worker-123" #456 prio=5 os_prio=0 tid=0x00007f8c9c001000 nid=0x1a2 runnable [0x00007f8c8c000000]
java.lang.Thread.State: RUNNABLE
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:272)
at com.example.FileUploadServlet.processUpload(FileUploadServlet.java:156) // ← 문제 지점
Heap Dump (힙 덤프)
목적: 메모리 상태 스냅샷 - JVM 힙 영역에 있는 모든 객체와 그 참조 관계를 캡처합니다.
특징:
-
파일 크기: 매우 큼 (힙 크기와 동일, 수 GB)
-
생성 시간: 수초~수십초, 애플리케이션 일시 중단 (Stop-the-World)
-
분석 도구: jmap, jcmd, -XX:+HeapDumpOnOutOfMemoryError
-
주요 내용:
-
객체 타입별 인스턴스 수와 크기
-
객체 간 참조 관계 (메모리 누수 경로 추적)
-
가비지 컬렉션 루트(GC Root)
-
클래스 로더 정보
-
사용 시점:
-
java.lang.OutOfMemoryError 발생 시
-
메모리 사용량이 지속적으로 증가하는 모니터링 결과
-
스레드 덤프 분석 후 메모리 누수가 원인으로 의심될 때
분석 포인트:
bash
# 힙 덤프 분석 (jmap)
jmap -histo <PID> | head -20 # 상위 20개 객체
# 또는 Eclipse MAT 등으로 분석
# → "대량 파일 업로드 후 File 객체가 해제되지 않고 누적" 여부 확인
진단 우선순위 결정
귀하의 "대량 파일 등록 후 장기간 액티브 상태 유지" 문제는:
-
우선 Thread Dump 3회 수집 (5초 간격)
-
어떤 스레드가 멈춰있는지 확인
-
대기 상태(WAITING)의 스레드가 과도하게 많은지 확인
-
socketRead0 또는 readBytes 등 I/O 대기 지점 찾기
-
-
Thread Dump 분석 후 메모리 누수 의심 시 Heap Dump 수집
-
업로드 파일 객체가 GC되지 않고 누적되었는지 확인
-
힙 덤프는 서비스 중단을 유발하므로, 야간 유지보수 시간대 수행 권장
-
-
동시 수집이 필요한 경우bash
# Thread Dump와 Heap Summary 동시 수집 jstack <PID> > thread_dump.txt & jmap -heap <PID> > heap_summary.txt
| 구분 | Thread Dump | Heap Dump |
| 무엇을 보는가? | 스레드의 실행 위치와 상태 | 객체의 메모리 할당 상태 |
| 언제 사용하는가? | 성능 저하, 응답 없음, 데드락 | OOM, 메모리 누수 |
| 귀하의 경우 | 필수 (액티브 상태 분석) | 선택 (메모리 문제 의심 시) |
| 생성 속도 | 빠름 | 느림 |
| 영향도 | 거의 없음 | 서비스 중단 발생 |
728x90
'법, 용어 > 용어' 카테고리의 다른 글
| 용어 | 재해 재난 (0) | 2025.12.21 |
|---|---|
| OLTP DW 조회 (0) | 2025.12.18 |
| 전산실 분전반 구성 STS(Static Transfer Switch) UPS 이중화 (0) | 2025.12.13 |
| 허브 스위치 스위치허브 (0) | 2025.12.13 |
| DSU CSU 라우터 (0) | 2025.12.13 |