답변

3

GC는 모든 개체를 검사하기 위해 모든 스레드를 고정해야합니다. 어떤 스레드가 실행 중이고 객체를 수정/생성하고 있다면 어떻게 할 수 있습니까?

더 좋게하지 마세요.

thogh 할 수있는 일은 중단하고 싶지 않은 상태로 들어가기 전에 GC.Collect() 및 GC.WaitForPendingFinalizers()를 호출하는 것입니다. 이것은 당신에게 약간의 시간을 줄 것입니다.

0

관리되지 않는 코드는 고정 해제 된 관리 대상 개체에 액세스 할 수 없지만 가비지 수집 중에는 차단하지 않고 실행됩니다. 가비지 수집 중에 실행해야하는 특정 루틴이 있고 고정되지 않은 관리 대상 객체에 대한 액세스가 필요하지 않은 경우 이러한 루틴을 비 관리 코드에 쓸 수 있으며 GC가 해당 루틴을 영향을주지 않습니다.