我試圖弄清楚如何GC /終結者在C#工作,所以我寫了下面的程序。但是在ReadKey之後,終結器被稱爲36193次。我認爲它應該只在程序結束並且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文檔嗎? – 2013-04-08 12:44:01
它看起來像你想垃圾收集器重新收集它。 – 2013-04-08 12:44:34
你爲什麼要重新登錄? – Spook 2013-04-08 12:45:36