Sha*_*ane 5 c# garbage-collection
我正在尝试测试一些使用的代码WeakReference- 如何强制收集引用对象以便reference.Target返回null?
我试过了
WeakReference reference = new WeakReference(null);
{
reference.Target = new object();
}
Console.WriteLine(reference.Target);
GC.Collect();
Thread.Sleep(1000);
Console.WriteLine(reference.Target);
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
但目标不是null两种情况.也试过多次调用GC.Collect,但它似乎没有任何区别.
在发布版本(启用优化)中运行代码并在不调试的情况下启动,垃圾收集器很好地演示了预期的行为。
调试器会将您的变量保留在 GC 根范围内,以便您需要检查它们。
另外,使用通用版本WeakReference<T>. 非通用 API 使用中存在的问题在通用 API 中得到了解决。请参阅:http ://www.philosophicalgeek.com/2014/08/14/prefer-weakreferencet-to-weakreference/
编辑:没有刷新,注意到帖子已经旧了,评论已经涵盖了这一点。