[JVM] Garbage Collector (2) 알고리즘 종류

itonse·2024년 5월 30일
0

JAVA

목록 보기
17/19

GC를 수행하기 위해 Stop The World가 발생되어 메모리를 청소하는 동안 애플리케이션의 실행을 일시 중단시킵니다. 이 중단 시간이 길어질수록 애플리케이션의 응답 시간이 느려질 수 있습니다.

저지연 GC는 이러한 일시 중단 시간을 최소화하여 애플리케이션의 성능을 개선합니다. 실시간 애플리케이션이나 반응성이 중요한 애플리케이션에서는 저지연이 특히나 중요합니다.

GC 알고리즘 종류

Parallel GC

  • 기본 알고리즘 (Java 8)
  • Young 영역의 Minor GC를 멀티 쓰레드로 수행하여 성능 향상
  • 대규모 애플리케이션에 적합하지만, 중단 시간이 길어질 수 있음

Parallel Old GC

  • Parallel GC를 개선한 버전으로, Young 영역 뿐만 아니라 Old 영역에서도 멀티 쓰레드로 GC를 수행
  • Old 영역의 GC를 더 효율적으로 수행하는 새로운 청소 방식인 Mark-Summary-Compact 적용

G1 GC (Garbage First)

  • 기본 알고리즘 (Java 9부터 현재 22까지)
  • 대규모 애플리케이션에서 안정적인 성능 제공
  • 힙을 여러 리전(region)으로 나누어 관리하고, 동시에 여러 리전을 청소하여 일시 중단 시간을 줄임
    • 기존의 GC 알고리즘에서는 Heap 영역을 물리적으로 고정된 Young / Old 영역으로 나누어 사용하였지만, G1 GC는 전체 Heap 영역을 Region이라는 영역으로 체스같이 분할하여 상황에 따라 Eden, Survivor, Old 등 역할을 고정이 아닌 동적으로 부여
    • region-based로 인해 메모리 단편화 문제발생이 크게 감소됨

Shenandoah GC

  • 저지연 GC
  • 실시간 애플리케이션에 적합
  • G1 GC가 가진 pause 이슈 해결

ZGC (Z Garbage Collector)

  • Java 17에서 정식 도입
  • 초저지연 GC (일시 중단 시간을 10ms 이하로 유지),
  • 큰 힙 메모리에서 효율적
  • 멀티 테라바이트 힙 지원


ref.
https://1-7171771.tistory.com/140
가비지 컬렉션 동작 원리 & GC 종류 총정리
https://mirinae312.github.io/develop/2018/06/04/jvm_gc.html

0개의 댓글

관련 채용 정보