가비지 콜렉터(Garbage Collector, GC)

Java에서 사용되는 자동 메모리 관리 시스템
힙(Heap) 메모리 영역의 메모리를 관리한다

목적

더 이상 사용되지 않는 메모리를 자동으로 식별하고 해제한다
메모리 누수를 방지하고 개발자의 메모리 관리 부담을 줄인다

작동 원리

루트 세트(Root Set)에서 시작하여 객체 그래프를 순회한다
도달 가능한 객체는 살아있는 것으로 표시한다
도달할 수 없는 객체는 가비지로 간주하고 수거한다

가비지 컬렉션 단계

Mark : 살아있는 객체를 식별하고 표시
Sweep : 표시되지 않은 객체(가비지)를 해제
Compact(선택적) : 남은 객체를 한 곳으로 모아 메모리 단편화를 줄임

가비지 컬렉션 유형

장점