✅ GC 로그 (Garbage Collection Log)
📌 개념
GC 로그는 JVM이 수행한 Garbage Collection(가비지 컬렉션) 내역을 기록한 로그입니다. JVM이 메모리를 회수하는 시점, 소요 시간, 회수된 메모리 크기 등을 확인할 수 있습니다.
📌 사용 목적
Full GC가 자주 발생하는지 확인
GC로 인해 애플리케이션이 멈추는 시간(Pause Time) 파악
메모리 누수 가능성이나 과도한 객체 생성 확인
📌 대표적인 분석 포인트
GC 횟수, 타입 (Minor / Major / Full GC)
GC 소요 시간
GC 후의 Heap 사용량
📌 설정 예시 (Java 8 기준)
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log
📌 분석 도구
GCViewer
GCEasy.io
VisualVM의 GC 탭
---
✅ 힙 덤프 (Heap Dump)
📌 개념
힙 덤프는 JVM 힙 메모리의 스냅샷입니다. 특정 시점에 어떤 객체들이 얼마나 메모리를 차지하고 있는지 상세하게 확인할 수 있습니다.
📌 사용 목적
메모리 누수(Leak) 분석
불필요하게 오래 살아있는 객체 탐지
OOM(OutOfMemoryError) 발생 원인 분석
📌 생성 방법
명시적으로: jmap -dump:format=b,file=heapdump.hprof <PID>
자동 생성: -XX:+HeapDumpOnOutOfMemoryError
📌 분석 도구
Eclipse MAT (Memory Analyzer Tool)
VisualVM
JProfiler
📌 분석 포인트
Dominators Tree: 어떤 객체가 가장 많은 메모리를 점유하는지
Retained Size: 해당 객체가 참조하는 모든 객체의 총 메모리 크기
Unreachable objects: GC 대상이 아닌데 계속 살아있는 객체들
---
✅ GC 로그 + 힙 덤프 활용 예시 (메모리 문제 진단 흐름)
1. 서비스 지연 or OOM 발생
2. GC 로그 확인 → Full GC가 잦고, 소요 시간이 증가함
3. Heap Dump 생성 → 어떤 객체가 메모리를 많이 잡아먹는지 분석
4. 메모리 누수 객체 확인 → 코드에서 참조 해제 안 된 컬렉션 등 수정
5. JVM 튜닝 → 힙 사이즈, GC 정책 재조정
---
✅ 마무리
도구 주로 분석하는 것 도구
GC 로그 메모리 회수 및 GC 관련 성능 문제 GCViewer, GCEasy
힙 덤프 객체 누수 및 메모리 사용 현황 MAT, VisualVM
GC 로그와 힙 덤프는 단독으로도 강력하지만 함께 사용하면 더욱 정확한 진단이 가능합니다.
필요하시면 실무에서 사용한 예시나 힙 덤프 분석 화면 예시도 드릴 수 있어요.
'Spring & Backend' 카테고리의 다른 글
| Canary 배포(Canary Deployment) (2) | 2025.08.10 |
|---|---|
| JWT (2) | 2025.08.09 |
| Storybook을 알고 계신가요? Storybook이란 무엇인지 설명해주세요. (4) | 2025.08.08 |
| Gradle에 대해 설명해 주세요 (4) | 2025.08.08 |
| 자바스크립트에서 메모리 누수가 발생하는 상황들을 설명해주세요. (8) | 2025.08.06 |
