문제

다른 프로세스나 WinDBG 내부에서 .NET 프로세스의 가비지 수집을 트리거하는 방법이 있습니까?

네이티브/관리 경계를 넘어 이동할 때 컬렉션을 강제로 수행하는 관리 디버깅 도우미가 있습니다. AQ시간 이 작업을 제안하는 버튼이 있는 것 같지만 이를 수행하는 방법에 대한 문서를 찾을 수 없습니다.

도움이 되었습니까?

해결책 3

Visual Studio에서 GC.Collect를 사용하는 John Cocktoastan의 대답이 가장 좋은 옵션입니다.

나는 여전히 WindBG에서 실제로 컬렉션을 수행 할 대안을 찾을 수 없지만 "얼마나 많은 메모리가 되 찾을 수 있습니까?"라는 문제로 물러납니다. (John의 답변에 대한 나의 의견을보십시오) 스크립트를 사용하여 대안이 있다고 생각합니다 (파워DBG?) !DumpHeap 및 !GCRoot의 일부 조합을 통해 검색하여 루트가 아닌 핸들을 찾고 사용된 공간을 합산합니다(기본적으로 GC가 디버거를 사용하여 수행하는 알고리즘을 에뮬레이트합니다).그러나 이것을 생각한 이후로 나는 이러한 버그 중 하나를 겪지 않았으므로 이를 수행하는 코드를 작성하려고 시도하지 않았습니다.

다른 팁

잘...바로가기 창이 있어요.프로세스에 연결할 수 있는 여유가 있다면 즉시 실행 창에서 수동으로 GC.Collect를 수행할 수 있다고 가정합니다.

더 큰 질문:왜 GC.Collect를 수동으로 유도하시겠습니까?이는 불쾌한 습관이며 훨씬 더 큰 디자인 문제를 나타냅니다.

답변 시간 다른 질문 :

기본적으로 사용 성능 보기:

PerfView.exe ForceGC [ProcessName | Process ID] /AcceptEULA

프로덕션 용도로 사용되지 않습니다.

원격을 통해 함수/개체를 노출하는 경우 매우 쉽게 수행할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top