2012-05-22 15 views
0

由於傑弗裏爲神奇一個, http://msdn.microsoft.com/en-us/magazine/bb985010.aspx過渡到FReachable隊列.NET垃圾收集

「垃圾收集器掃描結束隊列找指針這些對象。當一個指針被找到時,指針從最終化隊列中移除並附加到可擴展隊列(發音爲「F-reachable」)。「

從上面的對象J,我,E被從最終化隊列移到fReachable隊列。

我不清楚Finalization Queue到fReachable Queue的過渡。

隊列的FIFO邏輯怎麼樣?如何在沒有離隊F的情況下完成對象E的出隊?

無論是定稿隊列還是定稿列表?

請注意。

回答

4

儘管短語「finalization queue」和「freachable queue」中有單詞「queue」,但不應該對這些collection中的對象應該被處理的順序做出任何假設。我認爲「可最終名單」一詞會更具描述性;我認爲將它稱爲「隊列」的唯一原因是,如果垃圾收集器在識別大對象後啓動新的終止隊列,然後訪問其中的每個條目;然後將每個條目丟棄(如果終結器已被抑制),將其添加到新的終止隊列(如果該對象已被標記爲保留)或添加到可擴展隊列(如果該對象尚未被保留標記)。