[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
です。このテストが失敗する理由を誰かに教えてもらえますか?
編集:ありがとうstusmith
文字列への参照があります。これは定数であるため、おそらくインターンされており(つまり、動的に割り当てられていない)、収集されることはありません。
それでした。最初の行をに変更しました
var wr = new WeakReference(new object());
そしてテストは合格します:-)