반응형
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 가비지 컬렉션 프로세스
- 마킹(Marking): 사용 중인 객체를 식별
- 압축(Compaction): 살아남은 객체들을 메모리 공간의 시작 부분으로 이동
- 해제(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 |