데브허브 | DEVHUB | How C# Can Leak Memory And Why You Should CareHow C# Can Leak Memory And Why You Should Care
- C#은 가비지 컬렉터(GC)가 있는 관리형 언어이지만, 메모리 누수는 여전히 발생할 수 있습니다. 💡
- 메모리 누수는 할당된 메모리가 더 이상 필요하지 않을 때 해제되지 않아 GC가 회수할 수 없는 상태를 의미합니다. 🗑️
- C#에서 진정한 메모리 누수는 일반적으로 매우 드물며, 주로 고급 시나리오(비트맵, 그래픽, 상호 운용성)나 안전하지 않은 코드에서 발생합니다. 🚧
- C#에서 더 흔한 문제는 데이터베이스 연결이나 HTTP 클라이언트와 같은 관리형 리소스가 제대로
Dispose되지 않아 발생하는 '리소스 누수'입니다. 🔗
- 가장 흔한 C# 메모리 누수 원인은 이벤트 핸들러나 델리게이트 콜백을 등록(
+=)한 후 해제(-=)하지 않아 객체 참조가 계속 유지되는 경우입니다. 👻
IDisposable 패턴은 주로 리소스 해제를 위한 것이며, Bitmap과 같은 일부 관리형 객체는 내부적으로 큰 비관리형 메모리를 할당하여 특별한 GC 처리가 필요합니다. 🖼️
- 면접에서 C# 개발자는 메모리 누수의 정의와 발생 가능성을 설명할 수 있어야 합니다. 🗣️