2010-05-17 7 views
24

MSMQ를 통해 실행되는 WCF 서비스가 있습니다. 메모리는 시간이 지남에 따라 점진적으로 증가하여 일종의 메모리 누수가 있음을 나타냅니다. 로컬에서 서비스를 실행하고 PerfMon을 사용하여 일부 카운터를 모니터링했습니다. 총 CLR 메모리 관리 힙 바이트는 상대적으로 일정하게 유지되지만 프로세스의 개인 바이트는 시간이 지남에 따라 증가합니다. 이것은 어떤 종류의 관리되지 않는 메모리 누수가 있다고 생각하게한다. 관리되지 않는 메모리 누수가 문제라고 가정 할 때 문제를 어떻게 해결합니까? 관리되지 않는 메모리 누수의 원인에 대한 힌트를주기 위해 사용할 수있는 도구가 있습니까? 또한 내 서비스가 수행하는 모든 작업은 DTC 트랜잭션의 일부로 트랜잭션 대기열에서 읽는 중이고 데이터베이스에 쓰는 것입니다 (서비스 계약에서 트랜잭션을 요구함으로써 처리됨). 나는 COM이나 DllImports로 명시 적으로 아무것도하지 않을 것이다. 사전에.NET에서 관리되지 않는 메모리 누수를 조사하는 방법?

감사합니다!

답변

-1

Ants Profiler을 고려해 볼 가치가 있습니다. 내가 기억할 수있는 한 평가판을 다운로드 할 수 있습니다.

+18

ANTS Profiler는 관리되지 않는 메모리 프로파일 링을 지원하지 않습니다. – abhilash

3

Windbg를 사용하여 프로세스 힙을 분석 할 수 있습니다. 어떻게하는지 보여주는 기사와 치트 시트가 있습니다. Memory Leak Detection Using Windbg

1

것은 당신이 그것을 사용한 후 서비스 클라이언트를 닫 있는지 확인합니다. something like

try { 
... do work ... 
Close(); 
} ... exception handling ... { 
Abort(); 
} 
+3

'finally' 블록에서'Close'를합니다 - 예외가 있더라도 일어날 것입니다 ... – Basic

관련 문제