Erro 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
}
É o .NET 3.5 SP1
Alguém pode me dizer por que esse teste falha?
Editar: Obrigado stusmith
Você tem uma referência a uma string que, como é uma constante, provavelmente está internada (ou seja, não está alocada dinamicamente) e nunca será coletada.
Foi isso. Primeira linha alterada para
var wr = new WeakReference(new object());
e o teste passa :-)