본문 바로가기
language/java

Java GC 종류와 특징(G1GC, ZGC 등) 완벽 이해하기

by 죄니안죄니 2026. 5. 26.
반응형

Java GC 종류와 특징(G1GC, ZGC 등) 완벽 이해하기

Java 실무에서 JVM 성능을 결정하는 핵심 요소 중 하나가 바로:

Garbage Collector(GC) 종류 선택

입니다.

특히 대규모 서비스에서는:

  • 응답 속도
  • 서버 멈춤(STW)
  • TPS
  • 메모리 사용량
  • 장애 발생률

까지 GC 종류에 따라 크게 달라질 수 있습니다.

초보 시절에는 보통:

GC는 그냥 자동 메모리 정리 기능
 

정도로 이해하기 쉽습니다.

하지만 실제로는:

  • 어떤 GC를 쓰는가
  • Heap 구조를 어떻게 관리하는가
  • Pause Time을 얼마나 줄이는가

가 JVM 성능 핵심입니다.

이번 글에서는:

  • Serial GC
  • Parallel GC
  • CMS
  • G1GC
  • ZGC
  • Shenandoah

까지 Java GC 종류와 특징을 실무 관점으로 깊게 정리해보겠습니다.


1. 왜 GC 종류가 여러 개일까?

GC 목표는 서로 충돌합니다.

예:


목표 설명
Throughput 처리량 극대화
Low Latency 멈춤 최소화
메모리 효율 Heap 절약
CPU 효율 CPU 부담 감소

즉:

“모든 걸 동시에 완벽하게”
 

하기 어려움.

그래서 다양한 GC 등장.


2. GC 핵심 성능 지표

매우 중요합니다.


지표 의미
Throughput 전체 처리량
Pause Time STW 시간
Latency 응답 지연
Footprint 메모리 사용량

3. Stop-The-World(STW) 다시 이해하기

GC 수행 중 JVM은 보통:

애플리케이션 스레드 중단
 

합니다.

즉:

  • API 멈춤
  • 요청 지연
  • 서버 멈춤 현상

발생 가능.


4. 초기 GC: Serial GC

가장 오래된 GC.

특징:

단일 스레드 GC
 

입니다.


5. Serial GC 구조

동작:

GC 스레드 1개
↓
모든 메모리 처리
 

6. Serial GC 장점


장점 설명
구현 단순 O
작은 앱 효율적 O
오버헤드 적음 O

7. Serial GC 단점

문제:

STW 매우 길어질 수 있음
 

즉 서버 환경에는 부적합.


8. Parallel GC

Java 8 기본 GC.

특징:

GC 작업을 여러 스레드 병렬 처리
 

9. Parallel GC 목표

핵심 목표:

Throughput 극대화
 

즉:

전체 처리량 우선
 

입니다.


10. Parallel GC 장점


장점 설명
처리량 좋음 O
멀티코어 활용 O
서버 처리 성능 우수 O

11. Parallel GC 단점

문제:

Pause Time 길 수 있음
 

즉:

  • 대규모 Heap
  • 실시간 서비스

에서는 불리 가능.


12. CMS GC 등장 배경

문제:

“STW 너무 길다”
 

해결 목적.


13. CMS(Concurrent Mark Sweep)

Concurrent Mark Sweep 특징:

애플리케이션과 동시에 GC 수행
 

즉:

Concurrent GC
 

시도.


14. CMS 핵심 목표

Low Pause
 

즉:

멈춤 최소화
 

15. CMS 동작 단계

구조:

Initial Mark (STW)
Concurrent Mark
Remark (STW)
Concurrent Sweep
 

16. CMS 장점


장점 설명
Pause 감소 O
응답속도 향상 O
대화형 서비스 적합 O

17. CMS 단점

문제:


문제 설명
메모리 단편화 심함
CPU 사용량 증가 O
Full GC 위험 존재

18. 왜 CMS가 사라졌을까?

Java 14부터 제거.

이유:

G1GC가 더 발전했기 때문
 

19. G1GC 등장

Garbage-First Garbage Collector 는:

현대 JVM 대표 GC

입니다.

Java 9 이후 기본 GC.


20. G1GC 핵심 특징

기존 Heap 구조:

Young
Old
 

분리 기반.


21. G1GC는 Region 기반

Heap을:

작은 Region 단위
 

로 나눔.

예:

[Region][Region][Region]
 

22. 왜 Region 기반일까?

목표:

“필요한 영역만 수집”
 

즉:

  • 효율 증가
  • Pause 감소

가능.


23. G1GC 이름 의미

Garbage First
 

즉:

가비지가 많은 영역 우선 수집
 

합니다.


24. G1GC 장점


장점 설명
Pause 예측 가능 O
대용량 Heap 대응 O
Full GC 감소 O
현대 서버 적합 O

25. G1GC 단점


단점 설명
CPU 오버헤드 존재
작은 Heap 효율 낮을 수 있음 O

26. G1GC가 기본 GC가 된 이유

핵심:

Throughput + Low Pause 균형
 

이 좋기 때문.


27. ZGC 등장 배경

문제:

Heap 수백 GB~TB
 

규모 증가.

기존 GC Pause도 부담.


28. ZGC란?

Z Garbage Collector 는:

초저지연(Low Latency) GC

입니다.


29. ZGC 핵심 목표

Pause Time 10ms 이하
 

목표.

심지어 TB Heap에서도.


30. ZGC 특징


특징 설명
Concurrent 처리 매우 많음
Pause 극소화 O
대용량 Heap 매우 강함

31. ZGC 핵심 기술

대표 기술:

Colored Pointer
Load Barrier
 

32. Colored Pointer란?

객체 포인터에:

GC 상태 정보 포함
 

시키는 기술.

매우 고급 JVM 기술.


33. ZGC 장점


장점 설명
초저지연 매우 강력
대규모 서버 적합 O
Pause 거의 안 느낌 O

34. ZGC 단점


단점 설명
CPU 사용량 증가 가능 O
작은 서비스엔 과할 수 있음 O

35. Shenandoah GC

Shenandoah GC 는:

RedHat 중심 저지연 GC

입니다.


36. Shenandoah 특징

목표:

Pause Time Heap 크기와 무관
 

하게 만드는 것.


37. GC 종류 비교


GC 특징 장점 단점
Serial 단일 스레드 단순 느림
Parallel Throughput 중심 빠름 Pause 큼
CMS Low Pause 응답성 단편화
G1GC 균형형 범용성 오버헤드
ZGC 초저지연 Pause 매우 짧음 CPU 부담
Shenandoah 저지연 안정적 환경 제한

38. 실무에서 어떤 GC 많이 쓸까?

현재 기준:


환경 추천
일반 Spring 서버 G1GC
초대형 서비스 ZGC
작은 앱 Parallel GC 가능

39. GC 선택보다 중요한 것

매우 중요합니다.

GC보다 더 중요한 건:

객체 생성 패턴
 

입니다.


40. 안 좋은 코드 예시

 
while(true) {
    new Object();
}
 

GC 어떤 걸 써도 힘듦.


41. 실무 튜닝 핵심

우선순위:

객체 생성 줄이기
↓
Heap 튜닝
↓
GC 튜닝
 

입니다.


42. JVM 옵션 예시

G1GC 사용:

 
-XX:+UseG1GC
 

설명:


옵션 의미
-XX:+UseG1GC G1GC 활성화

43. ZGC 사용

 
-XX:+UseZGC
 

설명:


옵션 의미
-XX:+UseZGC ZGC 활성화

44. GC 로그 분석 중요

대표 옵션:

 
-Xlog:gc*
 

설명:


옵션 의미
-Xlog:gc* 상세 GC 로그

45. 실무에서 자주 하는 실수

1) GC만 바꾸면 성능 해결된다고 착각

대부분은:

객체 생성 구조 문제
 

인 경우 많음.


2) Heap 무조건 크게 설정

Heap 커지면:

Full GC 더 오래 걸릴 수도 있음
 

3) GC 로그 안 보고 추측 튜닝

매우 위험.


46. 가장 중요한 핵심 한 줄

GC 종류는
“처리량”과 “응답속도” 사이의 선택이다
 

입니다.


47. 정리

GC 종류는 단순 JVM 옵션이 아닙니다.

실제로는:

  • Heap 구조
  • 서버 응답성
  • 대규모 시스템 안정성
  • 객체 생명주기
  • JVM 성능 전략

전체와 연결되는 매우 중요한 시스템입니다.

특히 실무에서는:

  • Parallel GC
  • G1GC
  • ZGC
  • Stop-The-World
  • Heap 튜닝

을 정확히 이해하는 것이 매우 중요합니다.

다음 글에서는:

OutOfMemoryError 원인 분석

을 Heap Dump, Memory Leak, Metaspace OOM, Thread Leak까지 포함해서 실무 장애 분석 관점으로 깊게 정리해보겠습니다.

반응형

댓글