호빵의 IT 개발소

C# 가비지컬렉터란? 본문

CS(전공지식)/기술면접 준비

C# 가비지컬렉터란?

호빵Stack 2025. 4. 15. 18:10

C# 가비지 컬렉터 (Garbage Collector, GC)

  • *가비지 컬렉터(GC)**는 더 이상 사용되지 않는 객체를 자동으로 감지하고 메모리를 해제해 주는 C#의 메모리 관리 시스템.
  • .NET 런타임의 GC는 세대 기반(Generational GC) 구조를 사용하여 효율적으로 작동함.
  • 개발자가 new로 객체를 만들면 힙(Heap)에 할당되고, 더 이상 참조되지 않으면 GC가 주기적으로 탐색해 자동으로 수거함.
  • C++과는 달리, C#에서는 delete가 없고 GC가 이를 대신함.

 

GC의 핵심 개념: 세대(Generation)

세대 설명

Gen 0 가장 최근에 생성된 객체 (수명이 짧은 객체)
Gen 1 Gen 0에서 살아남은 객체
Gen 2 오래 살아남은 객체 (대부분 수명이 긴 객체들)
  • GC는 Gen 0을 자주 수집하고, Gen 2는 자주 안 건드림 → 성능 최적화
  • 대부분의 객체는 Gen 0에서 생성되고 바로 수거됨 (단명 객체)

 

 

면접 스타일 답변 예시:

C#의 가비지 컬렉터는 사용하지 않는 객체를 자동으로 감지하고 메모리를 해제해주는 시스템입니다.
.NET 런타임은 세대 기반 GC를 사용해서 최근에 생성된 객체는 자주 검사하고
오래된 객체는 덜 자주 검사하는 방식으로 성능을 최적화합니다.
개발자가 명시적으로 메모리를 해제하지 않아도 GC가 주기적으로 작동하며
더 이상 참조되지 않는 객체를 찾아 자동으로 수거합니다.
다만 수거 시점은 비결정적이기 때문에 Finalize, Dispose 패턴, using 구문을 함께 활용해 리소스를 명확히 해제하는 게 중요합니다.
Comments