Слабая ссылка Ошибка?
[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
}
Это .NET 3.5 SP1
Может кто-нибудь сказать мне, почему этот тест не проходит?
редактировать: Спасибо, Стусмит
У вас есть ссылка на строку, которая, поскольку она является константой, вероятно, является интернированной (то есть не выделяется динамически) и никогда не будет собрана.
Вот и все. Первая строка изменена на
var wr = new WeakReference(new object());
и тест проходит :-)