SimpleIsBest.NET

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


이번 포스트의 내용은 지난 포스트에서 다루었던 가비지 컬렉션 모드의 연장선 상에 있는 글로써 프로세스가 어떤 가비지 컬렉션 모드를 사용하는지 알아내는 방법과 Server-GC 모드 사용시 한번쯤 고려해 보아야 할 사항에 대해 다루고 있습니다. 가비지 컬렉션에 대해 어느 정도 알고 계시는 독자 분들일지라도 가비지 컬렉션 모드에 대한 포스트는 먼저 읽어 보실 것을 권장합니다. 가비지 컬렉션 다시 보기 Part I – 기본 작동 방식 가비지 컬렉션 다시 보기 Part II – 세대별 가비지 컬렉션 가비지 컬렉션 다시 보기 Part III – LOH 가비지 컬렉션 다시 보기 Part IV – 가비지 컬렉션 발생 시기 가비지 컬렉션 다시 보기 Part V – 가비지 컬렉션 모드 ... [상세]


어느덧 가비지 컬렉션 시리즈도 5번째나 되네요. 지난 포스트들에서 가비지 컬렉션의 기본 작동 방식과 세대별 가비지 컬렉션, LOH(Large Object Heap), 가비지 컬렉션 발생 시기를 살펴보았습니다. 이번 포스트는 CLR이 가비지 컬렉션을 수행하는 방식에 대한 내용입니다. CLR은 주어진 조건이나 설정에 따라 Workstation-GC, Server-GC 모드로 작동하게 되는데 이들에 대해 살펴보도록 하겠습니다. 특히, 닷넷 프레임워크 4.0에서 변경된 Background GC에 대해서도 살펴보도록 하겠습니다. 가비지 컬렉션에 대해 익숙하지 않으신 독자 분이나 이 글을 읽다가 이해가 안 가시는 분들은 지난 포스트들을 참고하시기 바랍니다. 가비지 컬렉션 다시 보기 Part I – 기본 작동 방... [상세]


이번 글은 최근 포스팅 중인 닷넷 가비지 컬렉션 시리즈의 네 번째 글입니다. 첫 번째 글에서는 가비지 컬렉션의 기본 작동 원리를 살펴보았고 두 번째 글에서는 세대별 가비지 컬렉션을 살펴보았습니다. 그리고 세 번째 글에서는 LOH(Large Object Heap)에 대해 살펴보았습니다. 이번 포스트에는 가비지 컬렉션이 언제 발생하는가에 대해 살펴보도록 하겠습니다. 이 내용은 원본 글에 언급되지 않은 내용이므로 이미 원본 글을 다 읽어본 독자들에게도 유용한 정보가 되리라 믿습니다. (아니면 말고… ㅡ,.ㅡ) 가비지 컬렉션 다시 보기 Part I – 기본 작동 방식 가비지 컬렉션 다시 보기 Part II – 세대별 가비지 컬렉션 가비지 컬렉션 다시 보기 Part III – LOH 가비... [상세]


4
13

Weak Reference

오후 12시 46분 | by 블로그쥔장 | Tags: ,
2004년 10월호 월간 마소에서 간단히 다루었던 Weak Reference 내용입니다. 원본 글 작성 이후로 Weak Reference는 크게 변경된 것이 없지만 내용을 다시 검토하고 보강 하였습니다. Introduction to Weak Reference 닷넷에서 객체에 대한 참조는 강력한 참조(strong reference)와 약한 참조(weak reference)로 나누어 볼 수 있다. 강력한 참조는 일반적인 객체 참조로서 지금까지 여러분이 쭈욱 사용해왔던 참조를 말한다. 약한 참조는 System.WeakReference 클래스를 통한 참조로서 약한 참조만을 갖는 객체는 루트 참조로부터 참조 그래프 내에 포함되어 있더라도 가비지 컬렉션의 대상이 된다.  루트 참조와 참조 그래프에 대한 내... [상세]


원래 이 시리즈(?)의 계획상, 3번째 글로는 가비지 컬렉션이 언제 발생하는지에 대한 글이고 그 다음이 LOH(Large Object Heap)에 대한 글이었습니다. 그런데 글을 쓰다 보니 LOH를 먼저 이야기 하는 것이 좋을 것 같아서 순서를 바꾸었습니다. LOH에 대한 내용은 월간 마이크로소프트웨어 2004년 10월에 기고한 원본 글에서는 이름만 살짝 언급한 수준이었습니다. 제 블로그 글들에서도 처음으로 상세하게 언급하는 토픽이므로 LOH에 대해 처음 접하시는 분이라면 알아두시면 정신/육체건강에 아주 초큼 도움이 되실 겁니다. LOH에 대해 이미 어느 정도 알고 계신 분들은 MSDN Magazine에서 Large Object Heap Uncovered를 읽어 보시길 권장합니다. 매우 상세하게 LOH에 대... [상세]


이 글은 월간 마이크로소프트웨어(일명 마소) 2004년 10월호 닷넷 칼럼에 기고한 글을 다시 리뉴얼 한 것입니다. 원본 글이 오래되었기 때문에 현재와 맞지 않는 부분을 수정하면서 내용도 보강하였습니다. 지난 글이 어려웠다면 이번 글은 더 어려울 수 있습니다. 하지만 그림을 잘 이해하시면 도움이 되리라 믿습니다. 그럼 시작해 보죠. 가비지 컬렉션 다시 보기 Part I – 기본 작동 방식 가비지 컬렉션 다시 보기 Part II – 세대별 가비지 컬렉션 가비지 컬렉션 다시 보기 Part III – LOH 가비지 컬렉션 다시 보기 Part IV – 가비지 컬렉션 발생 시기 가비지 컬렉션 다시 보기 Part V – 가비지 컬렉션 모드 가비지 컬렉션 다시 보기 Part V... [상세]


CLR(Common Language Runtime)의 가비지 컬렉션(Garbage Collection)의 작동 원리를 파악한다는 것은 매우 중요한 일입니다. 가비지 컬렉션의 작동 방식을 충분히 파악해야만 어플리케이션의 메모리 문제를 해결할 수 있거나 왜 Dispose 코딩 패턴의 코드가 그 따구로 생겼는지 이해할 수 있기 때문입니다. 이 글은 월간 마이크로소프트웨어(일명 마소) 2004년 10월호 닷넷 칼럼에 기고한 글을 다시 재정리 한 것입니다. 원본 글은 오래되었고 닷넷 프레임워크 1.1 기준으로 작성되었던 것이기 때문에 이번에 새로이 리뉴얼 하는 것입니다. 리뉴얼 한 글은 여러 회에 나누어 게시될 것이고 내용이 상당히 보완될 것입니다. 가비지 컬렉션 다시 보기 Part I – 기본 작동 방식 ... [상세]