2009-03-27 3 views
4

나는 어딘가에 (어쩌면 그렇게 되었을지 모르지만 질문을 찾을 수 없다)라고 생각한다. 디버그 세션에서 VS에서 stop을 누르면 프로세스가 중단되고 GC가 발생하지 않는다. 그러나 응용 프로그램 창을 닫으면 정상적으로 GC가 수행됩니다.작업 관리자에서 프로세스를 끝내면 GC가 여전히 정리됩니까?

이 정보가 맞습니까?

또한 (비 디버그) 프로세스가 작업 관리자에서 종료되면 어떻게됩니까? 여전히 GC가 정리됩니까?

답변

12

프로세스를 죽이면 운영 체제가 프로세스 메모리를 정리하지만 .NET 런타임 내부의 GC는 나타나지 않으며 종료 기가 실행되지 않습니다.

편집 : 다음 해당 WM_CLOSE 창 메시지를 보낼 것입니다, 당신은 "작업 끝내기"보낼 경우

를 (위의 당신이 "작업 끝내기"를 사용하지 않을 경우, 프로세스를 종료하는 경우에만 정확했다) 프로그램에 넣고 이 아니라면 프로세스를 즉시 종료하고 .NET을 올바르게 종료 할 수 있습니다.

편집 : 디버깅을 중지하면, 그것은 한 번에 프로세스를 종료 할, TerminateProcess() 대략 equivilent입니다 (또 다른 부록)

.

관련 문제