从终结队列过渡到FReachable Queue .net垃圾收集

时间:2012-05-22 15:33:28

标签: garbage-collection

感谢Jeffrey的出色表现,    http://msdn.microsoft.com/en-us/magazine/bb985010.aspx

“垃圾收集器扫描终结队列,查找指向这些对象的指针。当找到指针时,指针将从终结队列中删除并附加到可释放队列(发音为”F-reachable“)。” p>

从上面,对象J,I,E从Finalization Queue移动到fReachable Queue。

我不清楚Finalization Queue到fReachable Queue的转换。

Queue的FIFO逻辑怎么样?如何在没有出列F的情况下完成对象E的出列?

是终结队列还是终结名单?

请明白一点。

1 个答案:

答案 0 :(得分:4)

尽管短语“finalization queue”和“freachable queue”中有“queue”一词,但不应该对应该处理这些集合中的对象的顺序做出任何假设。我认为“可终结列表”一词更具描述性;我认为将其称为“队列”的唯一原因是,如果垃圾收集器在识别大型对象后,启动新的终结队列,然后访问其中的每个条目;然后将每个条目丢弃(如果终结器已被抑制),添加到新的终结队列(如果对象已标记为保留),或添加到可释放队列(如果对象尚未标记为保留)。