2013-03-04 3 views
1

아래에 표시된 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 세대를 나타 냈는지 설명 할 수 있습니까?

+1

콘솔 앱에서 코드를 시도하고 예상되는 결과를 볼 수있었습니다. 이러한 결과를 얻으려면 프로그램/응용 프로그램으로 다른 작업을 수행 했습니까? – ryadavilli

+0

아니요. 여기에 전체 코드가 있습니다. 클래스 프로그램 { 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) } } –

+0

@IgorLozovsky - 주석에 코드를 게시하는 대신 질문을 업데이트하면됩니다. –

답변

0

답변을 찾았습니다. 내 콘솔 앱의 현재 .Net Framework는 3.5입니다. 4 클라이언트 프로파일로 변경하면 예상 된 결과를 얻었습니다. 하지만 .net 3.5와 4.0/4.5의 가비지 수집의 차이점은 무엇입니까?

+0

다른 질문을하려면 '질문하기'버튼을 누르거나 답이 아닌 질문에 답을 찾으십시오. –

+0

두 번째 질문에는 질문이 필요합니다 (답변입니다). –

관련 문제