프로그래밍/C#

C# 가비지 컬렉터(GC)

우대비 2025. 5. 13. 20:40
반응형

1. 가비지 컬렉션이란?

가비지 컬렉션(GC)은 프로그램이 더 이상 사용하지 않는 메모리를 자동으로 해제하는 메모리 관리 시스템입니다. C#은 관리형 언어(Managed Language)로, 개발자가 직접 메모리를 할당하고 해제할 필요 없이 CLR(Common Language Runtime)이 자동으로 메모리를 관리합니다.

 

 

2. 가비지 컬렉션의 작동 방

2.1 세대별 가비지 컬렉션 (Generational GC)

C#의 GC는 3개의 세대(Generation)로 구성되어 있습니다:

  • Gen 0: 새로 생성된 객체들이 위치
  • Gen 1: Gen 0에서 살아남은 객체들이 위치
  • Gen 2: Gen 1에서 살아남은 객체들이 위치

 

2.2 가비지 컬렉션 프로세스

  1. 마킹(Marking): 사용 중인 객체를 식별
  2. 압축(Compaction): 살아남은 객체들을 메모리 공간의 시작 부분으로 이동
  3. 해제(Releasing): 사용하지 않는 메모리 영역 해제

 

3. 가비지 컬렉션 최적화

3.1 IDisposable 패턴

public class ResourceManager : IDisposable
{
    private bool disposed = false;
    
    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing)
            {
                // 관리되는 리소스 해제
            }
            // 비관리 리소스 해제
            disposed = true;
        }
    }
    
    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }
    
    ~ResourceManager()
    {
        Dispose(false);
    }
}

 

3.2 using 문 사용

using (var resource = new ResourceManager())
{
    // 리소스 사용
} // 자동으로 Dispose 호출

 

4. 결론

C#의 가비지 컬렉션은 강력한 메모리 관리 시스템이지만, 올바른 사용법을 이해하고 적용하는 것이 중요합니다. 적절한 메모리 관리 패턴을 사용하고, GC의 동작 방식을 이해함으로써 더 효율적인 애플리케이션을 개발할 수 있습니다.

반응형
LIST

'프로그래밍 > C#' 카테고리의 다른 글

백준 C# 속도 개선  (0) 2025.04.21
C# Func 과 Action  (0) 2022.07.06