Błąd WeakReference?
[TestMethod]
public void Memory()
{
var wr = new WeakReference("aaabbb");
Assert.IsTrue(wr.IsAlive);
GC.Collect();
GC.Collect();
GC.Collect();
GC.Collect();
GC.Collect();
Assert.IsFalse(wr.IsAlive); //<-- fails here
}
Jest to .NET 3.5 SP1
Czy ktoś może mi powiedzieć, dlaczego ten test kończy się niepowodzeniem?
Edytować: Dzięki stusmith
Masz odniesienie do łańcucha, który jest stałą, prawdopodobnie jest internowany (tzn. Nie jest przydzielany dynamicznie) i nigdy nie zostanie zebrany.
To było to. Zmieniono pierwszą linię na
var wr = new WeakReference(new object());
i test przechodzi :-)