2012-09-27 1 views
1

전자 메일 테이블 (Sql)의 새 메일을 읽도록 EmailService를 개발 중입니다. 이것은 C# 및 .NET 4.0으로 작성된 Windows 서비스입니다. 모든 이메일 레코드는 측정 된 메일 본문의 크기가 약 12kb입니다 ... 모든 메일을 보낸 후 내 서비스는 MailMessage.Disposed() 메소드를 호출하고 SmtpClient를 null로 설정합니다. 그러나 새로운 이메일을 읽지 않아도 내 서비스의 메모리가 계속 증가하고 시작된 서비스로 되돌아 가지 않습니다 (약 7MB 시스템 메모리 소요). 그것은 종종 70메가바이트 consumses - 1백20메가바이트 시스템 메모리를이 그렇게 이상한 :(System.Net.Mail.MailMessage는 전송 후 memeory를 해제하지 않습니다.

당신이

, 당신과 안부 감사

+0

다른 곳에서 문제가 해결되지 않았습니까? 메시지를 보내는 코드를 주석으로 처리하고 여전히 유출되었는지 확인하십시오. 또는 더 나은 방법은 memroy 프로파일 러를 사용하는 것입니다. – SLaks

+0

ANTS 메모리 프로파일 러를 사용하여 메모리를 추적하고 있는데, 왜냐하면 'sendMail 메소드를 호출하지 않은 경우 MailMessage가 처리하지 않은 메모리 증가 원인이 있음을 알 수 있습니다. 나는 새로운 100000 개의 메일을 읽는 것을 전제로하고 모든 것이 잘되었다. 그래서 MailMessage가 문제가 될 것입니다. –

답변

0

나는했습니다 위 내 경우에 대한 메모리를 줄일 수있는 솔루션이 있습니까?를 .

+0

WinForms가 System.Net.Mail과 아무 관련이 없으므로 유용하지 않습니다. – SLaks

0

당신은 SmtpClient에 대한 using를 사용해야이 전에, 시스템 자원이 실제로 .EXE이 종료 될 때까지 해제 (일부 창문이 2.0 일에 다시 프로그래밍을 형성)되지 않은 경우 볼과 MailMessage 제품 :

using(SmtpClient client = new SmtpClient("ipaddress")){ 
using(MailMessage message = new MailMessage()){ 

//Do something to fill the message... 

client.Send(message); 

} 

} 
관련 문제