CS | Garbage Collecter

성수당·2025년 7월 14일

나혼자 CS

목록 보기
5/18
post-thumbnail

🥔 가비지 컬렉터란?

Garbage Collecter(GC) 은 더 이상 사용되지 않는 메모리(쓰레기)를 자동으로 탐지하고 회수하는 메커니즘이다. 프로그래머가 일일이 free()나 delete를 호출하지 않아도, 런타임 중 자동으로 메모리 누수를 방지해준다.

| 즉, 가비지 컬렉터는 "더 이상 참조되지 않는 객체"를 찾아서 메모리에서 제거하는 시스템이다.

🥔 왜 필요한가?

  • 메모리 누수 방지: 수동 해제를 깜빡하면 발생하는 치명적인 누수를 막아준다.

  • 생산성 향상: 개발자가 직접 메모리 해제를 신경쓰지 않아도 되므로 코드 작성이 간단해진다.

  • 안정성 확보: dangling pointer나 double free와 같은 메모리 오류를 줄인다.

🥔 동작 방식 (기본 개념)

가비지 컬렉션은 대부분 다음 두 가지 기준으로 동작한다:

1. 참조 카운팅(Reference Counting)

  • 객체가 몇 개의 변수에 참조되고 있는지 계산

  • 참조 수가 0이 되면 삭제

2. 도달 가능성(Root Reachability)

  • 루트(전역 변수, 스택 변수 등)에서 연결된 객체만 ‘살아있는 것’으로 간주

  • 도달할 수 없는 객체는 "쓰레기"로 간주되어 제거

🥔 주요 가비지 컬렉션 알고리즘

  • Mark and Sweep
    모든 객체를 탐색 후, 사용되지 않는 객체를 제거
  • Generational GC
    객체의 수명을 기준으로 young / old로 나누어 효율적으로 수집
  • Stop-the-world
    수집 도중 애플리케이션 실행을 멈춤
  • Incremental GC
    조금씩 나눠서 수행 → 실행 지연 최소화
  • Concurrent GC
    GC를 애플리케이션과 동시에 수행

🥔 언어별 GC 지원 여부

🥔 정리

  • GC는 개발자의 메모리 해제 부담을 줄여주는 시스템

  • 자동으로 메모리를 회수하므로 편리하지만, 때로는 성능 이슈 발생

  • C/ C++은 GC가 없으므로 메모리 해제를 직접 관리해야 함

  • Python, Java은 GC를 통해 안정성을 확보

profile
말하는 감자🥔

0개의 댓글