제 프로그램이 매우 높은 속도 (약 1MB/초)로 Gen2로 메모리를 승격시키고 있으며 Gen2 수집이 발생할 때 성능이 저하됩니다. 어떤 오브젝트가 승격되었는지 이해하려고 할 때마다 실패했습니다. 주로 windbg에서 2 개의 덤프를 열었을 때 Gen2 크기가 증가한 메모리가 "Free"로 표시 되었기 때문에 실패했습니다. 고정 된 개체로 인해 문제가 발생하고 있지만 성능 통계에서는 고정 된 개체 수가 매우 적음 (약 2-4) 것으로 판단되었습니다..Net 가비지 컬렉터 - 런타임 중에 Gen2로 승격 된 내용을 확인하십시오.
지금 제가 시도하는 것은 런타임 중에 Gen2로 승격 된 객체를 어떻게 든 식별하는 것입니다. 이렇게하는 방법이 있습니까?
귀하의 일회용 물건을 처분하지 않은 것으로 의심됩니다. undisposed 대부분의 개체는 finalizer를 실행하고 거기에서 처분합니다. Finalizers는 GC 수집을 차단합니다 ("최종 결정이 콜렉션에주는 영향"섹션 (http://msdn.microsoft.com/en-us/library/ms973837.aspx#dotnetgcbasics_topic5)). –
큰 물체를 할당하고 있습니까? 대형 오브젝트 힙에 할당 된 AFAIK 오브젝트는 즉시 gen 2로 이동합니다. – CodesInChaos