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