2013-03-17 14 views

Odpowiedz

24

Według this:

Normalnie nie mogę powiedzieć, czy obiekt został śmieci zbierane przy użyciu niektórych odwołanie do obiektu, bo skoro masz odniesienie do obiektu, to nie będą zbierane śmieci .

Zamiast tego można utworzyć słabe odniesienie do obiektu za pomocą obiektu WeakReference. Słabe odniesienie to takie, które nie zostanie policzone jako odniesienie dla celów zbierania śmieci.

W kodzie poniżej sprawdzamy przed i po zbieraniu śmieci, aby pokazać, że obiekt Dog jest zbiorem śmieci.

 Dog dog = new Dog("Bowser"); 

     WeakReference dogRef = new WeakReference(dog); 
     Console.WriteLine(dogRef.IsAlive); 

     dog = null; 
     GC.Collect(); 

     Console.WriteLine(dogRef.IsAlive); 

enter image description here

Powiązane problemy