[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());
и тест проходит: -)