가비지 컬렉터 (Garbage Collector)
가비지 컬렉터
- 메모리 관리를 위해 사용되는 중요한 기능
- 더 이상 사용되지 않는 메모리를 자동 식별, 해제하여 메모리를 효율적으로 관리함
- C#에서는 가비지 컬렉터를 지원한다
- 언어와 런타임 환경에 따라 가비지 컬렉션 시간이나 주기가 다를 수 있다.
장점
-
메모리의 누수 방지
- 사용되지 않는 메모리를 식별해 누수를 방지한다. 프로그래머는 메모리 관리를 신경쓰지 않고 코드를 작성할 수 있다는 장점이 있다.
-
편의성
- 위의 내용과 상이하게 프로그래머가 메모리관리에 대해 신경을 쓰지 않기에 다른곳에 더 집중이 가능하다.
가비지 컬렉터를 회피하는 방법
- 메모리 관리에 주의
- 불필요한 객체 생성을 피하고, 사용 후 적절하게 해제
- 사용하지 않는 객체 해제
- 더 이상 필요하지 않은 객체들은 명시적으로 null로 설정하여 참조를 해제하고, 가비지 컬렉터가 해당 객체를 수거하도록 유도
- 대규모 객채 풀링 (Object Pooling)
- 반복적으로 생성 및 해제되는 객체를 미리 생성해두고 재사용함으로써 가비지 컬렉션을 회피
- 비관리 코드 사용 (Unmanaged Code Usage)
- 가비지 컬렉터가 관리하는 .NET 프레임워크의 관리 코드가 아닌, 비관리 코드를 사용하여 메모리 관리를 수행
- Weak references사용
- 가비지 컬렉션의 대상이 되지 않도록 하여 메모리를 회피