当前线程的性能计数器

时间:2010-01-27 13:59:23

标签: multithreading memory-management windows-services performancecounter

我正在构建一个使用非托管C ++ dll的.NET Windows服务。 我的服务和c ++ dll都在使用多线程。 处理完一段时间后,我的内存不足。 我尝试使用“性能计数器”来测量线程数 我监控以下值:

# of current logical Threads
# of current recognized threads
# of total recognized Threads

虽然第一个稳定且价值合理,但第二个和第三个不稳定。 他们总是在成长并达到一个庞大的数字(超过1500)。 他们是平等的!!!!

他们应该平等吗?我也不明白this page这些计数器是否会计算托管和非托管线程。

我怀疑非托管代码总是启动新线程而不是重用它们,但我不确定。

任何人都可以帮忙吗? 感谢

1 个答案:

答案 0 :(得分:1)

听起来像是泄漏。很可能非托管DLL没有正确处理它的线程。

为了真正测试这个写一个使用该DLL的单线程应用程序。监控应用程序。如果您发现它没有正确处理,那么您有两种情况之一。

要么您没有在DLL中调用正确的方法来关闭资源(线程)。或者DLL编码错误。第一个很容易修复,第二个需要访问源代码或原始开发人员。

如果它是DLL并且您无法联系他们或者他们不愿意修复,那么找一些其他几乎完全相同的东西。