본문 바로가기
법, 용어/용어

Heap Dump 와 Thread Dump 차이점

by 3604 2025. 12. 16.
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 객체가 해제되지 않고 누적" 여부 확인

진단 우선순위 결정

귀하의 "대량 파일 등록 후 장기간 액티브 상태 유지" 문제는:
  1. 우선 Thread Dump 3회 수집 (5초 간격)
    • 어떤 스레드가 멈춰있는지 확인
    • 대기 상태(WAITING)의 스레드가 과도하게 많은지 확인
    • socketRead0 또는 readBytes 등 I/O 대기 지점 찾기
  2. Thread Dump 분석 후 메모리 누수 의심 시 Heap Dump 수집
    • 업로드 파일 객체가 GC되지 않고 누적되었는지 확인
    • 힙 덤프는 서비스 중단을 유발하므로, 야간 유지보수 시간대 수행 권장
  3. 동시 수집이 필요한 경우
    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