임씨는 어떻게 GC/파이널 라이저가 작동하는지 알아 내려고 노력 했으므로 다음 프로그램을 작성했습니다. 그러나 ReadKey 후에 finalizer는 36,193 번 호출됩니다. 프로그램이 끝나고 AppDomain이 언로드 될 때 한 번만 호출되어야한다고 생각했습니다. 내가 여기서 무엇을 놓치고 있는지, 어떻게 작동합니까?파이널 라이저는 어떻게 작동합니까?
private class GCAnalyzer
{
private static int count = 0;
~GCAnalyzer()
{
if (!AppDomain.CurrentDomain.IsFinalizingForUnload())
{
count++;
GC.ReRegisterForFinalize(this);
Console.WriteLine("GC " + count);
}
}
}
static void Main(string[] a)
{
new GCAnalyzer();
Console.ReadKey();
}
msdn 설명서를 읽었습니까? –
마치 가비지 컬렉터가 그것을 기억하고 싶어하는 것처럼 보입니다. –
왜 당신은'ReRegisterForFinalize'을합니까? – Spook