아래에 표시된 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에 대한 3 번째 및 4 번째 호출이 2 대신 0 세대와 1 세대를 나타 냈는지 설명 할 수 있습니까?
콘솔 앱에서 코드를 시도하고 예상되는 결과를 볼 수있었습니다. 이러한 결과를 얻으려면 프로그램/응용 프로그램으로 다른 작업을 수행 했습니까? – ryadavilli
아니요. 여기에 전체 코드가 있습니다. 클래스 프로그램 { static void Main (string [] args) { Object o = new Object(); Console.WriteLine ("Gen"+ GC.GetGeneration (o)); // 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 (expected) } } –
@IgorLozovsky - 주석에 코드를 게시하는 대신 질문을 업데이트하면됩니다. –