이 기능을 사용하는 것의 심각한 의미를 이해하고 있지만 (적어도 그게 제 생각입니다) 존경하는 프로그래머가 사용하지 않는 것 중 하나가되는 이유를 알지 못합니다. 그것은 무엇을위한 것입니다.
사용자가 수행하는 작업에 따라 메모리 사용량이 크게 달라지는 애플리케이션을 개발하고 있다고 가정 해 보겠습니다. 응용 프로그램 수명주기는 편집과 실시간 처리의 두 가지 주요 단계로 나눌 수 있습니다. 편집 단계에서 수십억 또는 수조 개의 개체가 만들어 졌다고 가정합니다. 일부는 작지만 일부는 그렇지 않으며 일부는 종료자를 가질 수 있고 일부는 그렇지 않을 수 있으며 수명이 매우 몇 밀리 초에서 긴 시간까지 다양하다고 가정합니다. 다음으로 사용자는 실시간 단계로 전환하기로 결정합니다. 이 시점에서 성능이 근본적인 역할을하고 프로그램의 흐름을 조금만 변경해도 치명적인 결과를 초래할 수 있다고 가정합니다. 그런 다음 개체 풀 등을 사용하여 개체 생성을 가능한 최소한으로 줄 였지만 GC가 예기치 않게 소리를 내며 모든 것을 버리고 누군가가 죽습니다.
질문 :이 경우 두 번째 단계에 들어가기 전에 GC.Collect ()를 호출하는 것이 현명하지 않습니까?
결국,이 두 단계는 서로 시간이 겹치지 않으며 GC가 수집 할 수있는 모든 최적화 및 통계는 여기서 거의 사용되지 않습니다.
참고 : 여러분 중 일부가 지적했듯이 .NET은 이와 같은 응용 프로그램에 가장 적합한 플랫폼이 아닐 수 있지만이 질문의 범위를 벗어납니다. 의도는 GC.Collect () 호출이 애플리케이션의 전반적인 동작 / 성능을 향상시킬 수 있는지 여부를 명확히하는 것입니다. 우리 모두는 당신이 그런 일을 할 상황이 극히 드물다는 데 동의하지만 다시 한번 GC는 추측을 시도하고 대부분의 경우 완벽하게 잘 수행하지만 여전히 추측에 관한 것입니다.
감사.