어레이 메모리의 일부를 시스템에 반환하는 효과적인 방법이 있습니까? C#을 사용하여 하나의 큰 문자열 배열과 해시 테이블 (> 100k 요소)을 반복하고 각 요소를 끝내면 null로 설정합니다. 가베지 수집기를 다양한 수준에서 루프를 통해 호출하는 실험을 해봤지만 시스템 전체에 메모리를 반환하는 사람은 아무도 없습니다 (가비지 수집기를 완전히 호출하고 대기중인 종료자를 기다리면 코드가 매우 느리고 반응이 느려집니다).
나는 각 부분이 완료된 후 GC를 n 개의 부분으로 배열을 분할 및 통화에 대해 생각했지만 그점차적 인 GC 호출
GC.Collect(1);
GC.Collect(2);
....
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
아마도 가장 좋은 방법은 GC가 그 일을하도록하는 것입니다. null에 대한 참조 설정이 충분하지 않습니다. –
@HenkHolterman ok :) 나는 물어 보지 않을 것 같았다. 만약 내가 어떤 대답을 얻지 못하면 나는 질문을 지울 것이다. –
개체에 대한 다른 살아있는 참조가 없다고 가정한다. 또한 충분히 큰 경우 큰 오브젝트 힙에 할당 될 수 있으며 조각화를 볼 수 있습니다. –