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