[C#] 가비지 수집기를 강제로 실행하는 방법?

면접관이 오늘 이것에 대해 물었습니다 … 대답이 있습니까?



답변

System.GC.Collect()가비지 수집기를 강제로 실행합니다. 권장하지는 않지만 상황이 발생하면 사용할 수 있습니다.


답변

gc를 명시 적으로 호출하는 것은 좋지 않지만 전화를 거는 경우

GC.Collect();
GC.WaitForPendingFinalizers();

코드 전체에서 GC를 명시 적으로 호출하므로 GC.WaitForPendingFinalizers();after 을 호출하는 것을 잊지 마십시오 GC.Collect().


답변

GC.Collect() 

에서 MDSN ,

액세스 할 수없는 모든 메모리를 회수하려면이 방법을 사용하십시오.

메모리에 저장된 시간에 관계없이 모든 객체는 수집 대상으로 간주됩니다. 그러나 관리 코드에서 참조되는 오브젝트는 수집되지 않습니다. 시스템이 사용 가능한 최대 메모리 양을 되찾기 위해이 방법을 사용하십시오.


답변


답변

GC.Collect();

가비지 콜렉터가 항상 예상 한 것을 정리하지는 않을 수도 있습니다.


답변

가비지 수집기를 강제로 실행하고 싶지 않습니다.

그러나, 당신이 (순수하게 학문적 인 운동으로) 해본 적이 있다면 :

GC.Collect()


답변

.Net Framework는이 경우를 대비하여 자동으로 수행한다고 생각합니다. 먼저 지우려는 것을 선택하고 가비지 콜렉터를 호출하십시오.

randomClass object1 = new randomClass
...
...
// Give a null value to the code you want to delete
object1 = null;
// Then call the garbage collector to erase what you gave the null value
GC.Collect();

그게 다인 것 같아요. 누군가 도와주세요.