2025-03-26

GC(Garbage Collector) 벤치마크 테스트: G1GC vs ZGC vs GenZGC

GC(Garbage Collector) 벤치마크 테스트: G1GC vs ZGC vs GenZGC

Java의 세 가지 가비지 컬렉터를 벤치마크 테스트를 통해 비교합니다.

벤치마크 소스 코드: https://github.com/ongjin/gc-benchmark.git


벤치마크 결과

G1GC

  • 실행 시간: 72.344초
  • GC 사이클: 2,004회
  • 총 일시 정지 시간: 28,866ms
  • 사용된 컬렉터: Young Generation, Concurrent GC, Old Generation

ZGC

  • 실행 시간: 47.4초
  • GC 사이클: 920회
  • 총 일시 정지 시간: 2,319ms
  • 사용된 컬렉터: Cycles and Pauses

GenZGC

  • 실행 시간: 47.705초
  • GC 사이클: 886회
  • 총 일시 정지 시간: 2,588ms
  • 사용된 컬렉터: Minor/Major Cycles and Pauses

결과 비교

GC 실행 시간 GC 사이클 일시 정지 시간
G1GC 72.344s 2,004 28,866ms
ZGC 47.4s 920 2,319ms
GenZGC 47.705s 886 2,588ms

분석

테스트 결과 ZGC와 GenZGC가 G1GC 대비 크게 우수한 성능을 보여줍니다.

  • 실행 시간: ZGC와 GenZGC가 G1GC 대비 약 34% 더 빠름
  • 일시 정지 시간: ZGC가 G1GC 대비 약 92% 감소 (28,866ms → 2,319ms)
  • GC 사이클: ZGC와 GenZGC가 G1GC 대비 약 55% 적은 사이클

ZGC는 일시 정지 시간을 극적으로 줄이면서도 비슷한 총 실행 시간을 유지합니다. GenZGC는 ZGC와 유사한 성능을 보이며 세대별(Generational) 접근 방식을 통해 GC 사이클 수를 가장 적게 유지합니다.

관련 글

벡터 유사도 기반