2010-04-01 3 views
0

아무도가 네트에 세대 가비지 수집기에 대해 말해 줄 수 있습니까? 주제에아무도 나에 게 가비지 수집기의 세대에 대해 말해 수 있습니다 .net

+0

이것은 매우 광범위한 질문입니다. 알고 싶은 특정 것이 있습니까? 아니면 어떻게 작동 하는지를 알고 싶습니까? 나는 리히터의 "C#을 통한 CLR"을 읽을 것을 제안합니다. 그것은 당신에게 좋은 보상을 줄 것입니다. –

답변

0

가비지 컬렉터는 3 세대 0 1 2

가장 높은 세대 가비지 수집기가 일반적으로 암시 적으로 invocked되는 .NET 2.하지만, 명시 적으로 또한 GC를 강제 할 수 있습니다.

첫 세대, 즉 0 GEN & 응용 프로그램이 다음이 GC는 모든 요소가 다음 사용하는 경우 &가 사용되지 않는 요소를 delets되지 않은 요소가 사용 &에 & 검사를 invocks 몇 가지 더 많은 가치를 저장하려고 채울 것입니다 모든 요소가 조금 높은 수준, 즉 모든 세대가 채워질 때 2GEN까지 1GEN으로 전송됩니다. & 더 많은 요소를 저장하려고하면 GC가 예외 예외 메모리를 벗어난 예외 메모리를 던집니다.

+2

Large Object Heap은 최소 85000 바이트의 오브젝트에 대한 특수 힙입니다. 그것은 세대 적 힙과 조금 다르게 처리됩니다. –

1

당신은 가비지 컬렉터를 생성하지 않습니다.

예측할 수없는 시간에 발생하고 더 이상 참조되지 않는 항목을 지 웁니다. System.GC를 통해 액세스 할 수있는 가비지 수집기에서 Collect 메서드를 호출하여 즉시 작업 할 수있는 "제안"을 할 수 있지만 즉시 응답 할 것이라고 확신하지는 않습니다.

희망이 있습니다.

+1

@Martin : 가비지 수집기는 세대별로 메모리 블록을 내부적으로 분류합니다. OP가 원하는 정보라고 가정합니다. –

4

가비지 콜렉터가 사용하는 몇 가지 최적화 기술이 있습니다. 그 중 하나는 여러 세대의 대상을 사용합니다. 힙의 모든 객체는 세대 중 하나에 속합니다.

  • 세대 0 - 새로 할당 된 객체입니다. 그들은 아직 수집을 위해 표를하지 않았다.
  • 세대 1 -이 세대의 객체는 한 번의 소거에서 살아 남았습니다.
  • 세대 2 -이 세대의 개체는 둘 이상의 스윕에서 살아 남았습니다.

GC는 훨씬 적은 빈도로 생성됩니다.

관련 문제