SimpleIsBest.NET

유경상의 닷넷 블로그
Dispose 패턴 두 번째 글로써 고급 기법에 대해 설명하고자 합니다. 지난 포스트에서는 Dispose 패턴의 기초적인 구현 방법을 설명했었습니다. Dispose 패턴을 구현할 때 관리되지 않는(unmanaged) 자원을 해제할 때에는 약간 더 주의를 기해야 하기 때문에 고급이란 이름으로 별도의 포스트를 작성하게 되었습니다. “나는 패 죽여도 unmanaged 자원을 직접 사용하지 않는다”라고 자신하실 수 있는 독자 분은 이 글을 읽지 않으셔도 되겠습니다. 만약 여러분이 WIN32 API를 직접 호출하여 핸들 값을 얻어내거나 하는 등의 코드를 작성하셔야 한다면 한번쯤 고민을 해 보실 필요가 있습니다. Dispose 패턴 – 정리 필자가 지금까지 여러 차례의 포스트에서 닷넷 CLR의 가비지 컬렉션을 설명... [상세]


8
22

Dispose 패턴 (기초)

오후 01시 23분 | by 블로그쥔장 | Tags: ,
너무 간만에 씨리즈 글을 이어나가자니 뻘쭘 하네요. 이 글을 읽으시기 전에 가비지 컬렉션 다시 보기 씨리즈 글을 먼저 읽어 보시거나 기억을 떠올려 보시는 것이 좋을 듯합니다. 가비지 컬렉션 다시 보기 Part I – 기본 작동 방식 가비지 컬렉션 다시 보기 Part II – 세대별 가비지 컬렉션 위 글을 읽어 본 후에 조금 더 여력이 생긴다면 다음 두 글까지도 읽으시면 더욱 도움이 될겁니다. 가비지 컬렉션 다시 보기 Part III – LOH 가비지 컬렉션 다시 보기 Part IV – 가비지 컬렉션 발생 시기 이 글은 Finalizer 사용 시 주의 사항들 이란 글의 다음 내용이기 때문에 이 글은 반드시 정독 하시거나 기억을 되살리신 후에 본문을 읽으시는 것이 정신 건... [상세]


닷넷 플랫폼 환경은 메모리 회수를 가비지 컬렉션에 의존하고 있습니다. 그래서 파일, 데이터베이스 연결과 같은 시스템 자원을 해제하기 위해 기존 C/C++과 다른 방식을 취합니다. 그 중 하나가 Finalizer 입니다. Finalizer는 시스템 자원을 해제하기 위한 최후의 보루로써 사용되곤 하지만 잘못된 사용 패턴은 관리되는 힙이 비 효율적으로 사용되게 만듭니다. 과거 제 글에서 아주 간단히 다룬 적이 있는 내용이지만, 이번 포스트에서는 Finalizer의 기본 내용과 사용 시 주의 사항들을 좀 더 자세히 살펴보도록 하겠습니다. 특히, Finalizer는 세대별 가비지 컬렉션과 연관이 있으며 다음에(언젠지 모르지만) 다루게 될 Dispose 패턴과도 밀접한 관련이 있으니 잘 알아 두시면 여러모로 도움이 되... [상세]