다음을 통해 공유


리소스 관리

업데이트: 2007년 11월

모든 개체는 메모리, 파일 핸들, 데이터베이스 연결 등과 같은 시스템 리소스를 사용합니다. CLR(공용 언어 런타임)는 리소스를 자동으로 관리하므로 보통 불필요한 개체 해제에 대해 신경을 쓸 필요가 없습니다. 그러나 리소스 관리 작업에 대해 알고 있으면 응용 프로그램을 좀 더 효율적으로 디자인하는 데 도움이 됩니다.

가비지 수집

CLR에서는 할당된 리소스를 관리하는 가비지 수집이라는 시스템이 사용됩니다. 시스템 가비지 수집기는 개체가 응용 프로그램의 실행 코드에 더 이상 도달할 수 없을 때 해당 개체의 리소스를 해제합니다. 가비지 수집 알고리즘은 불명확하므로 CLR가 개체의 리소스를 해제할 시기를 확인할 수 없습니다. 다음 단원에서는 Visual Basic에서 리소스가 관리되는 방식에 대한 변경 내용을 다룹니다.

Nothing에 개체 할당

Nothing은 Visual Basic에서 개체 변수가 개체에 대한 참조를 포함하지 않음을 나타내는 데 사용되는 키워드입니다. 이전 버전의 Visual Basic에서는 Nothing에 사용하지 않는 개체를 할당하여 개체에서 개체 변수를 분리시키고 리소스를 해제하도록 권장했습니다. 지금도 사용하지 않는 개체를 Nothing에 할당할 수 있지만 Visual Basic에서 리소스를 관리하는 방식 때문에 이 프로세스로 개체가 즉시 해제되지 않을 수 있습니다. 따라서 공유 멤버나 전역 변수와 같이 수명이 긴 개체에 대해서만 Nothing에 개체를 할당해야 합니다.

Dispose

일부 개체는 Dispose라는 메서드를 지원합니다. 이 메서드의 용도는 시스템 리소스를 보다 신속하게 해제하는 것입니다. Dispose 메서드를 지원하는 클래스는 IDisposable 인터페이스를 구현해야 합니다. Dispose 메서드는 개체 리소스를 해제하려고 할 때 명시적으로 호출되어야 합니다. 예를 들면 다음과 같습니다.

ThisObject.Dispose()

Finalize

일부 클래스에서 지원하는 또 다른 메서드는 Finalize입니다. 이 메서드는 개체가 해제될 때 자동으로 실행되며 다른 정리 작업을 수행하는 데 사용될 수 있습니다. Finalize 메서드는 이전 버전의 Visual Basic에서 사용되는 Class_Terminate() 메서드와 유사합니다. 개체에 액세스할 수 없게 되면 CLR는 마지막으로 개체의 Finalize 메서드를 호출합니다. 가비지 수집 알고리즘이 불명확하므로 Finalize 메서드가 즉시 호출되거나 일정 시간이 지난 후 호출될 수 있습니다.

참고 항목

개념

개체 수명: 개체가 만들어지고 소멸되는 방법

구성 요소의 초기화 및 종료

참조

Nothing(Visual Basic)

Dispose

IDisposable