2025-03-26

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

JavaGCG1GCZGC벤치마크

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 사이클 수를 가장 적게 유지합니다.