检查弱引用目标引用计数

3
我知道如果一个对象没有引用,并且GC清除了它,该对象的WeakReference.Target属性将返回null,
但是假设该对象没有强引用,但GC尚未清除它,有没有办法通过其WeakReference来检查它是否具有任何强引用?
1个回答

5
不是的 - 这取决于对象是否有GC根。GC在运行之前不会确定这一点。
请参阅MSDN杂志文章(第一部分第二部分)以获取有关.Net中GC的更多信息。
**更新** 感谢@Adriano提供第二部分链接。

有没有可能IsAlive返回false,但WeakReference.Target不为null?换句话说,IsAlive属性只有在GC运行时才更新吗? - sternr
@sternr 抱歉,我看到你在问题中已经提到了对目标进行空值检查,因此删除了关于IsAlive属性的评论。确定对象是否存活的两种方法将始终给出相同的结果。 - Rich O'Kelly
也可以看一下这篇不错的文章:http://msdn.microsoft.com/zh-cn/magazine/bb985011.aspx - Adriano Repetti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接