2012-05-15 61 views
3

我知道,如果一個對象沒有引用,而GC清除它,對象的WeakReference.Target屬性將返回null,檢查WeakReference的目標引用計數

但是假設對象沒有很強的參考,但GC還沒有清除它,無論如何檢查它的WeakReference是否有任何強大的參考?

回答

5

否 - 這取決於對象是否具有GC根。 GC在運行前不會確定。

查看此MSDN雜誌文章(part onepart two)以獲取有關.Net中GC的更多信息。

**更新** 感謝@Adriano的第2部分鏈接。

+0

IsAlive是否有返回false的機會,但WeakReference.Target不會爲null? (換句話說 - IsAlive屬性只在GC運行時才更新?) – sternr

+0

@sternr對不起,關於IsAlive屬性的評論被刪除了,因爲我看到你已經提到了Target在你的問題中的空檢查。確定一個物體是否存在的兩種方法總會給出相同的結果。 –

+0

看看這篇不錯的文章:http://msdn.microsoft.com/en-us/magazine/bb985011.aspx –