본문 바로가기

JAVA

JVM GC 옵션 정리 – Garbage Collection 이해하기

Java 애플리케이션을 운영하다 보면 메모리 관리는 피할 수 없는 주제다.
그 중심에 있는 것이 바로 Garbage Collection(GC).
GC는 더 이상 참조되지 않는 객체를 자동으로 해제하는데, 어떤 알고리즘을 쓰느냐에 따라 성능과 안정성이 크게 달라진다.


1. GC 종류

GC 알고리즘 설명 특징

Serial GC 단일 스레드 기반 GC 작은 메모리, 단일 CPU 환경 적합
Parallel GC Young GC를 멀티스레드로 수행 Throughput 중심, 멀티코어 환경 적합
CMS (Concurrent Mark-Sweep) Old 영역을 병행 수집 Stop-the-world 최소화, 응답 시간 개선
G1 (Garbage First) Heap을 Region 단위로 관리 예측 가능한 GC 시간, 대규모 Heap에 적합
ZGC / Shenandoah 초저지연 GC 수십 GB~TB 메모리에서도 수 밀리초 지연 보장

2. JVM GC 옵션

옵션 의미 기본 적용 버전

-XX:+UseSerialGC Serial GC 사용 JDK 8 이하 (소형 Heap)
-XX:+UseParallelGC Parallel GC 사용 JDK 8 기본
-XX:+UseConcMarkSweepGC CMS 사용 JDK 9 이전
-XX:+UseG1GC G1 사용 JDK 9 이후 기본
-XX:+UseZGC ZGC 사용 JDK 11+ (실험적), JDK 15 이후 안정화
-XX:+UseShenandoahGC Shenandoah 사용 RedHat OpenJDK 계열

3. 실행 시 옵션 예시

# Parallel GC 사용
java -XX:+UseParallelGC -Xms512m -Xmx1024m MyApp

# G1GC 사용
java -XX:+UseG1GC -Xms2g -Xmx2g MyApp

# ZGC 사용
java -XX:+UseZGC -Xmx16g MyApp

4. GC 선택 기준

상황 적합한 GC

단일 CPU, 작은 Heap Serial
CPU 코어 많고 Throughput 중요 Parallel
Stop-the-world 최소화 필요 CMS
대규모 Heap (수 GB 이상), 예측 가능한 수집 시간 G1
초저지연, 초대용량 메모리 (수십 GB~TB) ZGC / Shenandoah

정리

  • GC는 JVM의 핵심 메모리 관리 메커니즘이다.
  • Java 버전에 따라 기본 GC가 다르다. (JDK 8 → Parallel, JDK 9 이후 → G1)
  • 상황에 맞는 GC를 선택하는 것이 성능 최적화의 핵심이다.

 

'JAVA' 카테고리의 다른 글

JAR 와 WAR 의 차이  (0) 2025.08.28
static  (0) 2025.08.19
5  (0) 2025.08.18
3  (0) 2025.08.18
java  (0) 2025.08.18