2011. 6. 7. 14:42

소멸자

닷넷 에서 클래스는 가비지 콜렉터(garbage collector)에 의해 소멸되기 때문에 소멸자가 언제 불러질지 예측할 수가 없습니다.
이런 이유 대문에, 소멸자는 거의 사용하지 않습니다.

클래스에서 리소스를 사용하고 해제해야하는 경우라면 Open()/Close() 와 같은 메서드를 정의하고 땨로 불러주는 것이
안전하고 확실한 방법입니다.


가비스 콜렉터
닷넷에서 메모리 관리는 CLR 런타임에 의해서 관리됩니다. 이 런타임에 가비지 콜렉터 기능이 있어서 필요 없는 메모리를 정리해 줍니다. 가비지 콜렉터는 힙(heap)에서 더 이상 참조되지 않는 객체를 찾아서 제거합니다.
가비지 콜렉터는 시스템에 메모리 리소스가 부족하다고 판단되 때 자동으로 실행되며, 코드에서 GC.Collect 에서드를 불러서 실행하기도 합니다. 결국 여러분이 정의한 객체가 언제 소멸될 것인지를 정확히 알기 어렵습니다.