-2

我的问题是,我在第 0 代中有对象,并且我还覆盖了终结方法。

当 gc 收集到 gen0 时,看到它必须最终确定,所以不立即释放它们,并将这些对象提升到 gen1?因此,只有当 gc 收集到 gen1 时,这些才会被释放。假设这些对象不会再被使用,它们就是垃圾

谢谢!

4

1 回答 1

4

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

所以是的,它得到了提升:)

于 2016-01-08T17:26:01.520 回答