GC.GetGeneration方法会产生意想不到的结果

本文关键字:意想不到 结果 GetGeneration 方法 GC | 更新日期: 2023-09-27 18:01:58

我有Jeffrey Richter的书中的示例代码,如下所示。

Object o = new Object();
Console.WriteLine("Gen " + GC.GetGeneration(o)); // 0. 
GC.Collect();
Console.WriteLine("Gen " + GC.GetGeneration(o)); // 1. 
GC.Collect();
Console.WriteLine("Gen " + GC.GetGeneration(o)); // 2 (expected) but it is 0
GC.Collect();
Console.WriteLine("Gen " + GC.GetGeneration(o)); // 2 (expected) but it is 1

谁能解释为什么第三和第四次调用GetGeneration显示0和1代而不是2?

GC.GetGeneration方法会产生意想不到的结果

我找到答案了。我的控制台应用程序目前使用的。net框架是3.5。当我将其更改为4个客户端配置文件时,我达到了预期的结果。但是我有另一个问题——。net 3.5和。4.0/4.5在垃圾收集方面有什么不同?