2010-01-22 75 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程序的内存使用情况。还有一本好书,像Richter的CLR,通过C#。

+0

感谢您的回答,但我也使用其他工具检查了内存,结果也一样。 – Wilson

+0

我们不能看着你的肩膀。我不认为有人能够帮助你,直到你记录你用这些“其他工具”找到的东西。 –

+0

我使用过性能计数器,并得到相同的结果 – Wilson