본문 바로가기

자바

가비지 컬렉션

컴퓨터 프로그램에서 메모리를 관리하기 위한 기법

 

프로그램에서 사용하지 않는 메모리를 자동 탐색 / 해제하여 메모리 누수 방지, 프로그램 성능 향상

 

JVM이 자동으로 수행

 

 

과정

  1. 메모리 관리
  2. 메모리 탐색
  3. 마킹
  4. 해제(릴리스)
  5. 압축

 

 

알고리즘

  1. Mark-Sweep - 메모리에서 사용되지 않는 객체를 표시하고 표시된 객체들을 정리
  2. Mark-Compact - Mark-Sweep와 비슷하지만 정리한 후 남은 객체를 한곳으로 모아 압축
  3. Copying - 실행되는 객체들을 새로운 메모리로 복사하여 정리
    • 힙 메모리를 두개로 나누어서 관리 - 실행되는 객체가 저장되는 영역 / 새로운 객체가 생성되는 영역
    • 실행되는 객체들을 다른 곳에 복사하여 정리 → 실행되는 객체만 존재하는 영역 발생
    • 객체를 복사하는데 비용으로 인한 오버헤드
    • 힙 영역의 절반만 사용하여 공간 활용 비효율
  4. Reference counting - 각 객체에서 참조 횟수를 기록하고 횟수가 0인 객체들을 정리

 

 

종류

  1. Serial GC
    • 기본적인 가비지 컬렉션
    • 싱글 스레드로 수행됨
  2. Parallel GC
    • 멀티 스레드를 이용한 가비지 컬렉션
  3. CMS GC(Concurrent Mark Sweep)
    • 응용 프로그램이 실행될때 동시에 실행되는 가비지 컬렉션
  4. G1 GC
    • 힙을 더 작은 영역으로 나누어 실행하는 가비지 컬렉션
  5. ZGC
    • 일시 중지를 최소화 하면서 큰  힙을 처리하도록 설계된 대기 시간이 짧은 가비지 컬렉션

'자바' 카테고리의 다른 글

클래스 Class  (0) 2023.01.29
자바 이미지 크롭  (0) 2023.01.26
직렬화 / 역직렬화 - 자바  (0) 2023.01.17
List Map Set  (0) 2022.10.19
자바  (0) 2021.12.31