¿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?

Edit : 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 recostackrá.

Eso fue todo. Se cambió la primera línea a

 var wr = new WeakReference(new object()); 

y la prueba pasa 🙂

Puedo pensar en dos posibles razones fuera de mi cabeza:

  1. Estás ejecutando en depuración. Las referencias en la depuración duran más tiempo que en el lanzamiento, y posiblemente más de lo que usted podría pensar.
  2. Tiene una referencia a una cadena, que, dado que es una constante, probablemente está internada (es decir, no asignada dinámicamente) y nunca se recostackrá.