컨텍스트 : 우리는 WPF 응용 프로그램을 신속하게 전달하기위한 프레임 워크를 구축하고 있습니다. 이 프레임 워크는 Autofac을 IoC 컨테이너로 사용하고 Prism v1의 영역도 사용합니다. Microsoft의 병렬 확장을 사용하여 작업을 예약하고 있습니다.WPF에서 메모리 누수를 추적하십시오
다음과 같은 문제가 있습니다. 빈보기 (너무 영역 및 자리 표시 자 컨트롤이있는 셸)로 응용 프로그램을 부팅하면 메모리가 약 60 초 동안 안정한 상태를 유지 한 후 약 초마다 증가합니다 4kb, 그 다음 4kb, 그 8kb. 3 초마다 16Kb가 메모리 압박에 추가됩니다.
우리가 누출을 추적하려고 시도한 것은 무엇입니까? dotTrace를 사용하여 시작했지만 30 분 간격으로 찍은 두 스냅 샷간에 차이점을 확인할 수 없습니다. 자세한 정보를 제공하지만 다시 2 개의 스냅 샷간에 차이점을 볼 수 없기 때문에 .NET 메모리 프로파일 러로 이동했습니다. 많은 개체가 생성되지만 제거되어 0의 델타가됩니다. 그래서 windbg로 이동했지만 결과는 같습니다.
또 다른 이상한 점은 sysinternals dbgvw를 시작할 때 응용 프로그램에서 호출이 발생하지 않는다는 것입니다.
우리는 누가 무엇을 범인인지 알아 내려고 시도 할만한 제안이 있습니까?
메모리가 증가하고 있는지 확인하기 위해 어떤 측정 항목을 사용하고 있습니까? –
메모리 사용을 측정하는 데 사용하는 메트릭을 정의해야하며, 할당이 관리되는지 또는 관리되지 않는지를 결정해야한다는 데 동의합니까? – morechilli
프로세스의 힙 메모리와 개인 바이트를 조사했습니다. perfmon을 살펴보면 관리되지 않는 메모리가 많이 증가하고 관리되는 메모리는 아주 작은 양의 바이트만으로 한 번씩 (매분마다) 증가한다는 것을 알 수 있습니다. 관리되지 않는 메모리가 훨씬 더 빠르게 증가합니다. 메모리가 증가하고 있는지 확인하기 위해 sysinternals 및 taskmanager에서 프로세스 탐색기를 처음으로 수행했습니다. 우리 응용 프로그램에는 많은 추적 문이있어서 –