C# .Net
소멸자
ravon
2011. 6. 7. 14:42
닷넷 에서 클래스는 가비지 콜렉터(garbage collector)에 의해 소멸되기 때문에 소멸자가 언제 불러질지 예측할 수가 없습니다.
이런 이유 대문에, 소멸자는 거의 사용하지 않습니다.
클래스에서 리소스를 사용하고 해제해야하는 경우라면 Open()/Close() 와 같은 메서드를 정의하고 땨로 불러주는 것이
안전하고 확실한 방법입니다.
가비스 콜렉터
닷넷에서 메모리 관리는 CLR 런타임에 의해서 관리됩니다. 이 런타임에 가비지 콜렉터 기능이 있어서 필요 없는 메모리를 정리해 줍니다. 가비지 콜렉터는 힙(heap)에서 더 이상 참조되지 않는 객체를 찾아서 제거합니다.
가비지 콜렉터는 시스템에 메모리 리소스가 부족하다고 판단되 때 자동으로 실행되며, 코드에서 GC.Collect 에서드를 불러서 실행하기도 합니다. 결국 여러분이 정의한 객체가 언제 소멸될 것인지를 정확히 알기 어렵습니다.
이런 이유 대문에, 소멸자는 거의 사용하지 않습니다.
클래스에서 리소스를 사용하고 해제해야하는 경우라면 Open()/Close() 와 같은 메서드를 정의하고 땨로 불러주는 것이
안전하고 확실한 방법입니다.
가비스 콜렉터
닷넷에서 메모리 관리는 CLR 런타임에 의해서 관리됩니다. 이 런타임에 가비지 콜렉터 기능이 있어서 필요 없는 메모리를 정리해 줍니다. 가비지 콜렉터는 힙(heap)에서 더 이상 참조되지 않는 객체를 찾아서 제거합니다.
가비지 콜렉터는 시스템에 메모리 리소스가 부족하다고 판단되 때 자동으로 실행되며, 코드에서 GC.Collect 에서드를 불러서 실행하기도 합니다. 결국 여러분이 정의한 객체가 언제 소멸될 것인지를 정확히 알기 어렵습니다.