✅ 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 로그와 힙 덤프는 단독으로도 강력하지만 함께 사용하면 더욱 정확한 진단이 가능합니다.

필요하시면 실무에서 사용한 예시나 힙 덤프 분석 화면 예시도 드릴 수 있어요.


LIST

+ Recent posts