2016-01-08 33 views
-2

我的问题是,我有第0代的对象,我也重写了最终化方法。最终确定和推广到第1代

当gc收集gen0时,发现它必须完成,所以不立即释放它们,并将这些对象提升到gen1?因此,如果gc收集gen1,这些只会被放弃。 假设这些物体不会再使用,它​​们就是垃圾

谢谢!

+0

这是你不应该担心自己。 GC并不保证将最终确定。 – Krythic

+0

好的,但这只是为了学习的目的 – Franmcod

回答

2

完成GC 已确定为垃圾的对象上的垃圾回收完成时调用完成方法。这意味着这些对象的内存不能立即回收 ,因为Finalize方法可能会执行访问字段的代码。因为最终目标必须在收集中幸存下来,所以它会被提升到另一代,迫使目标 的寿命比它应该长得多。里希特j。通过C#

所以-​​CLR是的,它得到的晋升:)