[CS][Java] GC(Garbage Collector) 알고리즘

손경이·2024년 5월 2일
0

CS Study

목록 보기
22/25

GC(Garbage Collector) 알고리즘


GC 종류에 따라 다양한 알고리즘이 사용될 수 있습니다. GC 알고리즘은 Mark And Sweep, Mark And Sweep Compact, Mark Summary Compaction 등이 있습니다.

용어 정리
GC(Garbage Collector)

  • 자바의 메모리 관리 방법 중 하나
  • JVM에서 메모리를 관리해주는 모듈
  • Heap 메모리를 재활용하기 위해서 더 이상 참조되지 않는 객체들을 메모리에서 제거하는 모듈

> GC의 종류

  • Serial GC, Parallel GC, Parallel-Old GC, CMS GC, G1 GC
  • 각각의 종류에 따라 다양한 알고리즘이 사용될 수 있음

    JVM의 GC 참고하기


> GC 알고리즘

  • GC를 구현하는데 사용될 수 있는 구체적인 GC 알고리즘들
  • Mark And Sweep, Mark And Sweep Compact, Mark Summary Compaction 등이 있음
  • 이러한 알고리즘들은 GC의 동작 방식과 특성을 결정, 각각의 GC 종류에 따라 사용되는 알고리즘이 달라질 수 있음

> Mark And Sweep

  • 가장 기본적인 GC 알고리즘
  1. Mark : 가비지 컬렉션 대상이 아닌(Reachable) 객체를 표시
  2. Sweep : 표시되지 않은 객체(가비지)를 힙에서 제거하여 메모리 회수
    • 가비지 : 쓰레기, 사용하지 않는 객체

> Mark And Sweep Compact

  • Mark And Sweep 알고리즘과 비슷, 다른 점은 Sweep 후에 Compact 과정이 있음
  1. Mark : 가비지 컬렉션 대상이 아닌(Reachable) 객체를 표시
  2. Sweep : 표시되지 않은 객체(가비지)를 힙에서 제거하여 메모리 회수
  3. Compact : 가비지 수집 후에 남은 객체들을 메모리 한쪽으로 모으고, 빈 공간으로 한 곳으로 모아 연속된 블록을 만듦, 이는 Heap 내의 각 블록들을 더 효율적으로 관리할 수 있게 함
    • 가비지 수집 : 프로그램 실행 중에 더 이상 필요하지 않은 메모리를 자동으로 식별하고 해제하는 프로세스

> Mark Summary Compaction

  • Heap의 Old 영역의 GC에서 Mark-Summary-Compaction 알고리즘을 채택
  • Sweep은 단일 스레드로 Old 영역 전체를 훓어 Rechable 객체(참조되고 있는 객체)를 찾아내는 방식이지만, Summary는 여러 스레드가 Old 영역을 분리하여 훑음
  • 또한 효율을 위해 앞선 GC에서 Compaction된 영역을 별도로 훑음
  1. Mark : 가비지 컬렉션 대상이 아닌(Reachable) 객체를 표시
  2. Summary : 실제로 가비지를 제거하는 과정, 이를 병렬로 처리하여 효율성이 높음
  3. Compaction : 가비지 수집 후에 남은 객체들을 메모리 한쪽으로 모으고, 빈 공간으로 한 곳으로 모아 연속된 블록을 만듦, 이는 Heap 내의 각 블록들을 더 효율적으로 관리할 수 있게 함

참고

0개의 댓글