Understanding garbage collection in .NET

Betrachten Sie den folgenden code:

public class Class1
{
    public static int c;
    ~Class1()
    {
        c++;
    }
}

public class Class2
{
    public static void Main()
    {
        {
            var c1=new Class1();
            //c1=null; //If this line is not commented out, at the Console.WriteLine call, it prints 1.
        }
        GC.Collect();
        GC.WaitForPendingFinalizers();
        Console.WriteLine(Class1.c); //prints 0
        Console.Read();
    }
}

Nun, obwohl die variable c1 in der main-Methode wird out-of-scope und nicht referenziert wird weiter von einem anderen Objekt, wenn GC.Collect() genannt wird, warum wird es nicht fertiggestellt es?

Die GC nicht sofort frei-Instanzen, wenn Sie außerhalb des Gültigkeitsbereichs. Es tut dies, wenn er es für notwendig hält. Sie können Lesen Sie alles über die GC hier: msdn.microsoft.com/en-US/library/vstudio/0xy59wtx.aspx
Dein link ist kaputt.)

InformationsquelleAutor Victor Mukherjee | 2013-06-16

Schreibe einen Kommentar