感谢杰弗里的精彩表演,http://msdn.microsoft.com/en-us/magazine/bb985010.aspx
垃圾回收器扫描终止队列,查找指向这些对象的指针。找到指针后,将从终止队列中删除该指针,并将其附加到可释放队列(发音为“F-reachable”)。
从上面开始,对象J、I、E从完成队列移动到fReachable队列。
我不清楚Finalization队列到fReachable队列的转换。
队列的FIFO逻辑是怎样的呢?如何在不使F出队的情况下完成对象E的出队?
是Finalization队列还是Finalization列表?
希望你能给我一些启发。
发布于 2012-06-01 10:21:27
尽管在短语"finalization queue“和"freachable”中有"queue“一词,但不应该对处理这些集合中的对象的顺序做出任何假设。我认为术语"finalizable list“更具描述性;我能想到的将其称为”队列“的唯一原因是,垃圾收集器在识别大型对象后,启动一个新的finalizable队列,然后访问其中的每个条目;然后每个条目都被丢弃(如果终结器已被取消),添加到新的finalizable队列中(如果该对象已被标记为保留),或添加到可释放队列(如果该对象尚未被标记为保留)。
https://stackoverflow.com/questions/10705236
复制相似问题