훌륭한 .NET 개발자가 되기 위해서는 무엇보다 관리 환경에서 메모리와 주요 리소스들이 어떻게
관리 되는지를 올바르게 이해해야 한다. .NET 환경에서는 특별히 메모리 관리와 가비지 수집기의
동작 방식을 정확히 이해하는 것이 무엇보다 중요하다.
가비지 수집기는 관리되는 메모리(managed memory)를 관리하며 네이티브 환경과는 다르게
메모리 누수, 댕글링 포인터(dangling pointer), 초기화되지 않는 포인터, 여타의 메모리 관리 문제를
개발자들이 직접 다루지 않도록 자동화해준다.
그럼에도 개발자가 올바르게 해제 작업을 수행하면 더욱 효과적으로 가비지 수집이 이뤄질 수 있다.
이와는 반대로 데이터베이스 연결, GDI + 객체, COM 객체, 시스템 객체 등과 같은 비관리 리소스는
여전히 개발자가 직접 관리해야 한다. 여기에 더해 이벤트 핸들러나 델리게이트 등도 잘못 사용하면
이들이 참조하고 있는 객체들이 불필요하게 오랫동안 메모리에 남게 된다. 결과를 반환하는 쿼리 등
도 자칫 잘못 사용하면 예상 보다 더 오랫동안 메모리를 점유하곤 한다.
다행스럽게도 가비지 수집기가 메모리를 전반적으로 관리해주기 때문에 메모리 관리를 개발자가
온전히 책임져야 하는 환경에 비해 상대적으로 응용프로그램의 구조를 단순하게 유지할 수 있다.
메모리를 직접 관리해야 할 경우에 상당히 복잡할 수 밖에 없는 순환 참조의 문제나 여러 객체들
간의 복잡한 연관 관계의 문제도 관리 환경에서는 비교적 쉽게 구현할 수 있다. 가비지 수집기의
마크/콤팩트(Mark/Compact)알고리즘은 여러 객체 사이의 연관 관계를 효율적으로 파악하여
더 이상 사용되지 않는 객체를 자동으로 제거한다. 가비지 수집기는 COM의 경우처럼 개별 객체가
스스로 자신의참조 여부나 횟수 등을 관리하도록 하지 않고, 응용프로그램의 최상위 객체로부터