2012-05-22 13 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中的对象应该被处理的顺序做出任何假设。我认为“可最终名单”一词会更具描述性;我认为将它称为“队列”的唯一原因是,如果垃圾收集器在识别大对象后启动新的终止队列,然后访问其中的每个条目;然后将每个条目丢弃(如果终结器已被抑制),将其添加到新的终止队列(如果该对象已被标记为保留)或添加到可扩展队列(如果该对象尚未被保留标记)。