我有Jeffrey Richter書中的示例代碼,如下所示。GC.GetGeneration方法給出了意想不到的結果
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代?
我在控制檯應用程序中試過你的代碼,並能看到預期的結果。你有沒有做任何其他的程序/應用程序來獲得這些結果? – ryadavilli 2013-03-04 11:21:01
不是。這是完整的代碼。 class Program static void Main(string [] args) 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(預計) GC.Collect(); Console.WriteLine(「Gen」+ GC.GetGeneration(o)); // 2(預計) } } – 2013-03-04 11:24:12
@IgorLozovsky - 只需更新問題,而不是嘗試在評論中發佈代碼。 – 2013-03-04 15:28:02