Home Garbage Collector의 역할, 원리, 알고리즘
Post
Cancel

Garbage Collector의 역할, 원리, 알고리즘

Garbage Collector

가비지 컬렉터는 메모리 관리를 담당하는 Java Virtual Machine (JVM)의 구성 요소 중 하나로, 더 이상 사용되지 않는 객체들을 자동으로 찾아내고 제거하는 역할을 합니다.

역할

가비지 컬렉터의 주된 역할은 더 이상 사용되지 않는 메모리 자원을 감지하고 해제함으로써 자바 프로그램에서의 메모리 관리를 자동화하는 것입니다. 미사용 객체를 식별하고 메모리를 정리하여 프로그램의 성능을 최적화합니다.

원리

가비지 컬렉터는 참조 카운팅이나 도달성 분석과 같은 원리를 기반으로 동작합니다. 참조 카운팅은 객체의 참조 횟수를 계산하여 불필요한 객체를 해제하는 방식이고, 도달성 분석은 루트에서 시작하여 참조 체이닝을 통해 접근 가능한 객체를 찾아내고, 참조할 수 없는 객체를 해제합니다. 이러한 원리를 통해 가비지 컬렉터는 자동으로 메모리를 관리하고 누수를 방지합니다.

참조 카운팅((Reference Counting)
객체가 참조될 때마다 참조 횟수를 증가시키고, 참조가 해제될 때마다 감소시키는 방식. 참조 횟수가 0이 되면 해당 객체를 해제합니다.

도달성 분석(Reachability Analysis)
루트(예: 스택, 정적 변수)에서 시작하여 참조 체이닝을 통해 접근 가능한 객체를 찾고, 참조할 수 없는 객체를 가비지로 처리합니다.

알고리즘

1. Serial Garbage Collector

단일 스레드를 사용하여 가비지 컬렉션을 수행합니다. 주로 작은 규모의 애플리케이션 또는 단일 프로세서 환경에서 사용됩니다.

2. Parallel Garbage Collector

다수의 스레드를 사용하여 가비지 컬렉션을 병렬로 처리합니다. 멀티코어 환경에서 성능을 향상시키기 위해 사용됩니다.

3. Concurrent Mark-Sweep (CMS) Garbage Collector

메인 애플리케이션 스레드와 별도의 가비지 컬렉션 스레드가 병행하여 작동하며, 일시 중단 시간을 최소화하는 것을 목표로 합니다.

4. G1 Garbage Collector

전체 힙을 작은 영역으로 나누어 가비지 컬렉션을 수행하며, 세대별 가비지 컬렉션을 통해 일시 중단 시간을 최적화합니다. 대규모 메모리를 가진 애플리케이션에서 효과적입니다.

참고