2010-05-17 42 views
24

我有一个运行在MSMQ上的WCF服务。内存逐渐增加,表明存在某种内存泄漏。我在本地运行服务,并使用PerfMon监控一些计数器。总CLR内存管理的堆字节保持相对恒定,而进程的私有字节随时间增加。这导致我相信存在某种非托管内存泄漏。假设非托管内存泄漏是问题,我该如何解决这个问题?是否有任何工具可以用来提示有关导致非托管内存泄漏的提示?另外,我所有的服务都是从事务处理队列中读取数据并写入数据库,这些都是DTC事务的一部分(通过请求服务契约上的事务处理在底层处理)。我没有做任何明确的COM或DllImports。如何在.NET中研究非托管内存泄漏?

在此先感谢!

回答

-1

Ants Profiler值得考虑。据我记得,你可以下载试用版。

+18

ANTS Profiler不支持非托管内存分析。 – abhilash 2011-05-02 13:00:12

1

确保您在使用它后关闭该服务客户端。像

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

在'finally'块中执行'Close' - 即使有异常它也会发生... – Basic 2012-12-10 00:06:10