¿Debilidad de error de referencia?
[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
}
Es .NET 3.5 SP1
¿Alguien puede decirme por qué falla esta prueba?
Editar: Gracias stusmith
Tiene una referencia a una cadena, que, dado que es una constante, probablemente esté internada (es decir, no asignada dinámicamente) y nunca se recopilará.
Eso fue todo. Se cambió la primera línea a
var wr = new WeakReference(new object());
y la prueba pasa :-)