我有一个在MSMQ上运行的WCF服务 . 内存随着时间的推移逐渐增加,表明存在某种内存泄漏 . 我在本地运行该服务并使用PerfMon监控一些计数器 . 总CLR内存管理堆字节保持相对恒定,而进程的私有字节随时间增加 . 这让我相信存在某种非托管内存泄漏 . 假设存在非托管内存泄漏问题,我该如何解决这个问题?是否有任何工具可以用来向我提供有关导致非托管内存泄漏的提示?此外,我所有的服务都是从事务队列读取并写入数据库,所有这些都是DTC事务的一部分(通过要求服务 Contract 上的事务来处理) . 我没有明确地使用COM或DllImports做任何事情 .
提前致谢!
4 回答
您可以使用Windbg来分析进程堆 . 有一些文章和备忘单显示如何做到这一点,如Memory Leak Detection Using Windbg
如果您愿意了解windbg(http://www.microsoft.com/whdc/devtools/debugging/default.mspx),本博客将为您提供帮助 .
http://blogs.msdn.com/tess/default.aspx
确保在使用后关闭服务客户端 . 就像是
Ants Profiler值得考虑 . 据我所知,您可以下载试用版 .