2014-04-16 8 views
1

Visual Studio 2008을 사용하여 Winform/WPF 프로젝트에서 작업하고 있습니다.Winforms/WPF 전용 바이트 메모리 누수?

여러 프로젝트와 클래스를 사용하여이를 작동 제품으로 만듭니다.

제 문제는 메모리 사용량에 초당 4 ~ 8k의 누출이 있다는 것입니다. 그것은 작은 누출이지만, 논스톱 연속 4-8k입니다. 우리의 응용 프로그램은 야간과 심지어 며칠 동안 실행됩니다. 며칠이 지나면 컴퓨터가 처리 할 수있는 것보다 많은 메모리를 사용하고 (보통 2-3 기가) PC에서 강제로 다시 시작하는 것이 유일한 해결책입니다. 이 누출은 호스트와의 네트워크 통신을 제외하고 아무 일도 일어나지 않는 경우에도 발생합니다.

ANTS 메모리 프로파일 러를 통해 프로젝트를 자세히 분석 한 결과 Private 바이트 데이터가 지속적으로 증가하고 있음을 발견했습니다. 이 개인 정보가 어디에서 생성되는지 알려줄 방법이 있습니까? 나는 ANTS로 이것을 추적하는 행운이별로 없었다. 단계가 크게 도움이 될 것입니다! (~ 45 분) 증가 개인 바이트의

이미지 :

타임 라인 성장의

graph of the private bytes at each snapshot

이미지 (~ 45 분) : 사전에

timeline of the private byte growth

감사합니다!

+0

나는 CPU 프로파일 러를 사용하려고합니다. 아마도 CPU가 소비 된 곳에서 할당 된 메모리가있을 것입니다. – usr

+0

관리되는 메모리 프로파일 러는 관리되지 않는 메모리 누수를 진단하는 데 유감스럽게도 도움이되지 않습니다. 환경 요인을 찾는 데 시간을 투자하십시오. 관리되지 않는 디버깅을 사용하고 디버거의 Debug + Windows + Modules 창에서보고있는 모든 항목을 고려해야합니다. 기계를 안전하고 유용하게 사용하는 것처럼 보이는 cr * pware를 찾는 좋은 방법입니다. 먼저 맬웨어 방지 프로그램을 시작하십시오. –

답변

0

개인 바이트가 계속 증가하면 메모리 누수가 있음을 의미합니다. 시도는 DebugDiag, MS에서 무료로, 또한 Windows에서 메모리 누수를 추적하는 아주 좋은 도구입니다.

이 도구는 DebugDiag 컬렉션을 사용하여 프로세스를 모니터링하는 규칙을 먼저 작성하고, 규칙에 따라 메모리 덤프를 생성하므로 수동으로 메모리 덤프를 만들 수 있습니다. 그런 다음 DebugDiag Analysis를 사용하여 덤프를 분석 할 수 있습니다. 분석 전에 올바른 기호 경로를 설정하십시오.

이 MSDN 문서 Identify And Prevent Memory Leaks In Managed Code도 도움이 될 수 있습니다. 이 기사에서는 메모리 누수가 기본 메모리인지 아니면 관리되는 메모리인지를 찾는 방법을 알려줍니다. 순전히 .NET 관리 누수 인 경우 CLR profiler을 사용하여 문제를 디버깅 할 수도 있습니다.