|
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
|
번역
원본
|
Object.Finalize 메서드
가비지 수집자 에서 회수하기 전에 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다.
네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)
참고 |
|---|
가비지가 수집될 때 종료자가 실행되는 시간은 정의되어 있지 않습니다. Close 메서드나 Dispose 메서드를 호출했을 때만 특정 시간에 리소스가 해제됩니다. 한 개체가 다른 개체를 참조하는 경우에도 두 개체의 종료자가 실행되는 순서는 지정되어 있지 않습니다. 다시 말해, 개체 A가 개체 B를 참조하고 두 개체 모두 종료자를 가졌다면, 개체 A의 종료자가 시작될 때 개체 B가 이미 종료되었을 수 있습니다. 종료자가 실행되는 스레드도 지정되어 있지 않습니다.
다른 종료자에서 무한 루프를 실행하거나 잠글 수 없는 경우에도 계속 시도하여 무기한 차단하는 경우. 런타임에서는 종료자를 완전히 종료하려고 하기 때문에 한 종료자가 프로세스를 무기한 차단하면 다른 종료자가 호출되지 않을 수 있습니다. 런타임에서 정리할 시간 없이 프로세스가 종료되는 경우. 이때 런타임에서 프로세스 종료에 대해 보내는 첫 번째 알림은 DLL_PROCESS_DETACH 알림입니다.
using System; using System.Diagnostics; public class ExampleClass { Stopwatch sw; public ExampleClass() { sw = Stopwatch.StartNew(); Console.WriteLine("Instantiated object"); } public void ShowDuration() { Console.WriteLine("This instance of {0} has been in existence for {1}", this, sw.Elapsed); } ~ExampleClass() { Console.WriteLine("Finalizing object"); sw.Stop(); Console.WriteLine("This instance of {0} has been in existence for {1}", this, sw.Elapsed); } } public class Demo { public static void Main() { ExampleClass ex = new ExampleClass(); ex.ShowDuration(); } } // The example displays output like the following: // Instantiated object // This instance of ExampleClass has been in existence for 00:00:00.0011060 // Finalizing object // This instance of ExampleClass has been in existence for 00:00:00.0036294
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)
.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.
참고