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 の 3 回目と 4 回目の呼び出しで、2 世代ではなく 0 世代と 1 世代が表示された理由を説明できる人はいますか?