gpt4 book ai didi

c# - 弱引用错误?

转载 作者:太空狗 更新时间:2023-10-29 22:11:41 25 4
gpt4 key购买 nike

[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

You have a reference to a string, which since it is a constant, is probably interned (ie not dynamically allocated), and will never be collected.

就是这样。将第一行更改为

var wr = new WeakReference(new object());

测试通过:-)

最佳答案

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

  1. 您正在调试中运行。调试中的引用比发布中的引用持续时间更长,而且可能比您想象的要长。
  2. 您有一个对字符串的引用,由于它是一个常量,因此可能是驻留的(即不是动态分配的),并且永远不会被收集。

关于c# - 弱引用错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/208387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com