문서의 이전 판입니다!


Java Garbage Collector 비교

GC 종류 설명 장점 단점
Serial GC 단일 스레드로 동작하는 GC. 작은 힙 메모리에서 유용. 단순한 구현, 적은 메모리 사용. 큰 힙에서 지연 시간이 길어짐.
Parallel GC 병렬로 처리하는 GC. Throughput 중심. 다수의 스레드를 활용해 처리량 극대화. 지연 시간이 길어질 수 있음.
CMS (Concurrent Mark-Sweep) Old 영역을 처리할 때 멀티스레드로 병렬 처리. GC 지연 시간이 짧음. 메모리 단편화 문제. stop-the-world 이벤트 발생 가능.
G1 (Garbage First) 힙을 Region 단위로 나눠 GC를 실행. 지연 시간과 처리량의 균형을 중시. 지연 시간 단축 및 큰 힙에 적합. 구성 및 튜닝 복잡. 초기 오버헤드 있음.
ZGC (Z Garbage Collector) 초저지연 GC. 매우 큰 힙(테라바이트 규모)에서 유용. 지연 시간이 짧고 큰 힙에 적합. 초기 버전에서는 일부 플랫폼에서만 사용 가능.
Shenandoah GC 초저지연 GC. 힙 메모리 크기와 관계없이 낮은 지연 시간 제공. 지연 시간 짧음. G1보다 빠른 수집 가능. CPU 사용량이 상대적으로 높음.
Epsilon GC “No-Op” GC. 메모리를 수집하지 않음. 매우 낮은 오버헤드. 테스트 용도에 적합. 메모리 부족 발생 시 OutOfMemoryError를 유발.
Generational ZGC ZGC의 세대 구분 버전(자바 21 도입). ZGC의 장점과 함께 세대 구분에 의한 최적화. 새로운 기술로서 튜닝 경험이 적음.
자바 버전 기본 GC
자바 8 Parallel GC
자바 9~10 G1 GC (기본 GC로 변경됨).
자바 11 G1 GC
자바 12~15 G1 GC, 하지만 새로운 GC(ZGC, Shenandoah)도 옵션으로 사용 가능.
자바 16~17 G1 GC, ZGC 및 Shenandoah 성능 개선.
자바 18~20 G1 GC, Generational GC를 실험적으로 도입.
자바 21 Generational ZGC (기본 GC로 변경되지는 않았지만, 성능 최적화를 위해 도입됨).
로그인하면 댓글을 남길 수 있습니다.
  • java_garbage_collector_비교.1733373368.txt.gz
  • 마지막으로 수정됨: 2024/12/05 04:36
  • 저자 koov