我很确定我已经阅读过(在Richter的C#书中)实现IDisposable的对象和/或有一个Finalizer的对象直到第2代。但是,我找不到引用,我的测试应用程序没有似乎支持我的信念。
其他人可以确认/否认吗?
答案 0 :(得分:4)
他们肯定能够幸存到第一代,因为他们被排在队列中,以便终结者能够接近他们。然而,如果终结者在第1代收集之前到达他们,他们将无法生存到第2代。
我还没有比较那本书,但你确定你不会把它与大对象堆上的项混淆吗?大对象堆仅在Gen 2集合上收集。
答案 1 :(得分:1)
正如Anthony所说,finalization延迟了垃圾收集(即,在等待终结器运行时,通常会提升对象)。
单独实施IDisposable
对垃圾收集没有影响 - GC不会“了解”IDisposable
。
答案 2 :(得分:0)