본문 바로가기
Language & Framework

GC 알고리즘별 Minor GC와 Survivor 영역의 동작 비교 정리

by Jordy-torvalds 2025. 5. 17.

이 문서는 G1GC의 Minor GC 동작 원리, Survivor 영역의 역할, 그리고 다른 GC 알고리즘에서의 Survivor 처리 방식을 비교하며 정리한 내용입니다. 각 GC 방식의 힙 구조, GC 트리거 조건, STW 여부 등을 상세히 설명하고, 어떤 상황에서 Survivor가 사용되는지를 중심으로 핵심 내용을 요약합니다.


1. G1GC의 Minor GC

힙 구조

  • G1GC는 힙을 Region 단위로 나눔
  • Young Generation은 여러 개의 Eden + Survivor Region으로 구성됨

Minor GC 트리거

  • Eden 영역이 가득 차면 Minor GC 발생
  • Survivor가 가득 차는 건 트리거 요인은 아님 (대신 promotion failure 발생 가능)

Minor GC 시 동작

  • Eden에 있는 살아있는 객체는 Survivor 또는 Old로 복사
  • 기존 Survivor의 객체는 다른 Survivor 또는 Old로 복사
  • 이 과정은 Stop-The-World(STW) 구간에서 이루어짐
  • 복사 기반의 GC 방식

2. Survivor 영역의 특성

구분 설명
할당 여부 애플리케이션은 직접 할당하지 않음
사용 시점 Minor GC 중에만 사용
주요 역할 Eden에서 살아남은 객체를 임시로 저장
승격 객체의 Age가 임계치를 넘으면 Old로 승격
GC 트리거와의 관계 Eden과 달리 직접적인 트리거는 아님

3. 다른 GC 알고리즘과 Survivor

GC 종류 세대 구조 Survivor 존재 Survivor 사용 시점
Serial GC 있음 있음 Minor GC 중
Parallel GC 있음 있음 Minor GC 중
CMS 있음 있음 Minor GC 중
G1GC 있음 (Region 기반) 있음 Minor GC 중
ZGC 없음 없음 해당 없음
Shenandoah 없음 없음 해당 없음

세대형(Generational) GC는 모두 Minor GC에서만 Survivor 사용
ZGC, Shenandoah는 세대 구분이 없기 때문에 Survivor 자체가 없음


핵심 요약

  • Survivor는 Eden의 일부가 아니며, 단지 Minor GC 중에만 사용되는 중간 캐시 역할의 공간
  • Minor GC는 Eden이 가득 찼을 때만 발생, Survivor는 직접적인 트리거 요인이 아님
  • 모든 세대형 GC에서 Survivor는 Minor GC 중에만 사용되며,
  • ZGC, Shenandoah 같은 최신 GC는 애초에 Survivor 영역 자체가 존재하지 않음