2010-01-22 5 views
0

SmtpClient.Send()을 호출 할 때 메모리 누수가 발생합니다.SmtpClient.Send가 메모리 누수를 초래 함

전자 메일을 보내는 서비스가 있습니다. TaskManager에서 메모리 누출을 발견했습니다. 나는 SmtpClient.Send() 라인을 주석 처리했으며, 서비스를 다시 시작했을 때 메모리 사용량이 증가하지 않았 음을 알았습니다.

+0

글쎄 ... 자세한 내용을 게시 할 수 있습니까? Send()에 메모리 누수가 있음을 어떻게 알았습니까? 사용한 도구의 결과를 게시 할 수 있습니까? – A9S6

+0

나는 우편물을 보내는 서비스를 가지고있다. TaskManager에 의해 발견 된 메모리 누출. SMTPClient.Send() 행에 주석을 달았습니다. 서비스가 다시 시작되면 메모리가 커지지 않는 것으로 나타났습니다. – Wilson

답변

3

Taskmgr.exe가 누수 감지 도구라고 가정하는 것은 매우 일반적인 실수입니다. .NET 가비지 수집기와 Windows 힙 관리자의 조합은 너무 복잡하여 해당 도구에서 볼 수있는 번호와 리버스 엔지니어링되지 않습니다.

수천 통의 이메일 메시지를 보내 자신에게 증명하십시오. SmtpClient.Send()가 실제로 유출되면 프로그램이 OutOfMemory 예외로 인해 빠르게 충돌합니다. Perfmon.exe 및 .NET CLR 메모리 범주의 성능 카운터를 사용하여 .NET 프로그램의 메모리 사용에 대한 더 많은 정보를 얻으십시오. C#을 통한 Richter의 CLR과 같은 훌륭한 책입니다.

+0

답변을 주셔서 감사합니다.하지만 다른 도구를 사용하여 메모리를 검사 한 결과도 같습니다. – Wilson

+0

어깨를 볼 수 없습니다. 나는 당신이 그 "다른 도구"로 찾은 것을 문서화 할 때까지 아무도 당신을 도울 수 있다고 생각하지 않습니다. –

+0

성능 카운터를 사용하여 동일한 결과를 얻었습니다 – Wilson

관련 문제