CS) Mark & Sweep 알고리즘

Mark & Sweep 알고리즘

Info

가비지 컬렉션(Garbage Collection) 기법 중 하나로,
메모리에서 더 이상 참조되지 않는 객체를 찾아내어 메모리를 회수하는 방법

Mark

루트 객체에서부터 시작하여 모든 도달 가능한 객체를 찾아 마크

  • 객체 생성: 0 표시
  • 모든 루트에서 그래프 탐색: 1 표시

루트 객체

가비지 컬렉션에서 "시작점" 역할을 하며, 프로그램에서 직접적으로 접근 가능한 객체들의 집합

  • 스택에 있는 변수들
  • 전역 객체 및 변수
  • 레지스터에 저장된 값들

Sweep

마크되지 않은 객체들(즉, 더 이상 도달할 수 없는 객체)을 메모리에서 제거

  • 0 표시 객체 정리
  • 모든 객체의 마킹 비트를 초기화 (Mark 페이즈에서 다시 1로 변경)

단점

  • 가비지컬렉션 수행중엔 프로그램의 실행이 잠시 중단
  • 단편화 문제 발생
    • 사용 가능한 메모리공간이 쪼개져 있어 조각모음이 필요

Reference


포스트
카테고리
시리즈