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)!
- 你在调试中运行。 调试中的引用持续时间比发布时间长,可能比您想象的要长。
- 你有一个字符串的引用,因为它是一个常量,可能是实例(即没有动态分配),永远不会被收集。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1009212.html