Java

가비지 컬렉션(Garbage Collection) 종류

개발만파볼까 2023. 5. 4. 00:49
728x90
반응형
SMALL
가비지 컬렉터 특징 장점 단점 적합한 상황
G1 GC 영역별 관리, 동시성 GC 정지 시간 최소화, 가비지가 많은 영역 우선 처리 작은 힙에서 상대적으로 비효율적 대용량 힙, 낮은 정지 시간이 필요한 경우
Parallel GC 병렬 처리 전체 처리 시간 단축 정지 시간이 길 수 있음 병렬 처리 성능을 중요시하는 경우
CMS GC Old 영역 동시성 GC 정지 시간 최소화 메모리 추가 사용, 고부하에서 성능 저하 정지 시간이 짧아야 하는 경우
ZGC 저지연, 대용량 힙 처리 대용량 힙, 매우 낮은 정지 시간 메모리 오버헤드가 높을 수 있음 대용량 힙과 매우 낮은 정지 시간이 필요한 경우
Shenandoah GC 저지연, 다양한 플랫폼 지원 정지 시간 최소화, 다양한 환경에서 사용 가능 메모리 오버헤드가 높을 수 있음 정지 시간이 짧아야 하며, 다양한 플랫폼에서 작동하는 경우

https://www.javamadesoeasy.com/2016/10/g1-garbage-collector-garbage-first.html

 

G1 GC (Garbage-First Garbage Collector)

  • G1 GC는 Java의 HotSpot 가상 머신에서 사용되는 동시성 가비지 컬렉터입니다.
  • 기존의 Young, Old 영역을 여러 개의 동일한 크기의 영역으로 나누어 관리하며, 영역 별로 가비지 컬렉션을 수행합니다.
  • 가비지가 많은 영역부터 처리하여 전체적인 가비지 컬렉션 효율을 높입니다.
  • 멀티스레드를 효율적으로 활용하여 가비지 컬렉션 작업을 병렬로 처리하고, 정지 시간을 최소화합니다.

Parallel GC

  • Parallel GC는 여러 스레드를 사용하여 가비지 컬렉션 작업을 병렬로 처리하는 가비지 컬렉터입니다.
  • Young 영역의 가비지 컬렉션은 전체 스레드를 사용하여 처리하며, 정지 시간이 짧습니다.
  • Old 영역의 가비지 컬렉션은 모든 애플리케이션 스레드를 일시 중지하고 병렬로 처리합니다.

CMS GC (Concurrent Mark and Sweep Garbage Collector)

  • CMS GC는 Old 영역에 대한 가비지 컬렉션 작업을 애플리케이션 실행과 동시에 수행하는 가비지 컬렉터입니다.
  • Young 영역은 병렬 GC와 동일한 방식으로 처리합니다.
  • Old 영역에서는 가비지 컬렉션 작업을 애플리케이션 스레드와 동시에 수행하므로, 정지 시간이 상대적으로 짧습니다.
  • 단점으로는, 가비지 컬렉션 작업 중에 메모리를 추가로 사용하게 되며, 가비지 컬렉션 성능이 높은 부하 상황에서 저하될 수 있습니다.

ZGC (Z Garbage Collector)

  • ZGC는 Java의 HotSpot 가상 머신에서 사용되는 저지연 가비지 컬렉터입니다.
  • 대용량 힙을 다루는 데 특화되어 있으며, 수 밀리초의 정지 시간으로 가비지 컬렉션을 수행합니다.
  • 가상 메모리를 활용하여 객체를 이동하며, 가비지 컬렉션 작업을 병렬로 처리합니다.
  • 동시성 가비지 컬렉션을 지원하며, 애플리케이션의 실행을 최소한으로 방해하면서 가비지 컬렉션을 수행합니다.

Shenandoah GC

  • Shenandoah GC는 OpenJDK에서 사용되는 저지연 가비지 컬렉터입니다.
  • 대용량 힙을 처리하는 데 특화되어 있으며, 수 밀리초의 정지 시간으로 가비지 컬렉션을 수행합니다.
  • 애플리케이션 스레드와 동시에 가비지 컬렉션 작업을 병렬로 처리하며, 정지 시간을 최소화합니다.
  • 다양한 플랫폼에서 사용할 수 있도록 설계되어 있습니다.

 

728x90
반응형
LIST