GC.GetGeneration方法给出了意想不到的结果

时间:2013-03-04 11:19:01

标签: c# garbage-collection

我有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

有人可以解释为什么第3次和第4次调用GetGeneration显示0和1代而不是2代?

1 个答案:

答案 0 :(得分:0)

我找到了答案。我的控制台应用程序的当前.Net Framework是3.5。当我将其更改为4客户端配置文件时,我获得了预期的结果但我有另一个问题 - .net 3.5和4.0 / 4.5中的垃圾收集有何不同?