Csharp/C#教程:WeakReference Bug?分享


WeakReference Bug?

[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()); 

并且测试通过:-)

我可以想到两个可能的原因:

上述就是C#学习教程:WeakReference Bug?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  1. 你在调试中运行。 调试中的引用持续时间比发布时间长,可能比您想象的要长。
  2. 你有一个字符串的引用,因为它是一个常量,可能是实例(即没有动态分配),永远不会被收集。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1009212.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐