Mark & Sweep 알고리즘
Info가비지 컬렉션(Garbage Collection) 기법 중 하나로,
메모리에서 더 이상 참조되지 않는 객체를 찾아내어 메모리를 회수하는 방법
Mark
루트 객체에서부터 시작하여 모든 도달 가능한 객체를 찾아 마크
- 객체 생성: 0 표시
- 모든 루트에서 그래프 탐색: 1 표시
루트 객체
가비지 컬렉션에서 "시작점" 역할을 하며, 프로그램에서 직접적으로 접근 가능한 객체들의 집합
- 스택에 있는 변수들
- 전역 객체 및 변수
- 레지스터에 저장된 값들
Sweep
마크되지 않은 객체들(즉, 더 이상 도달할 수 없는 객체)을 메모리에서 제거
- 0 표시 객체 정리
- 모든 객체의 마킹 비트를 초기화 (Mark 페이즈에서 다시 1로 변경)
단점
- 가비지컬렉션 수행중엔 프로그램의 실행이 잠시 중단
- 단편화 문제 발생
- 사용 가능한 메모리공간이 쪼개져 있어 조각모음이 필요