【发布时间】:2010-01-27 13:59:22
【问题描述】:
我正在构建一个使用非托管 C++ dll 的 .NET Windows 服务。 我的服务和 c++ dll 都使用多线程。 在处理过程中一段时间(数小时)后,我的内存不足。 我尝试使用“性能计数器”测量线程数 我监控以下值:
# of current logical Threads
# of current recognized threads
# of total recognized Threads
虽然第一个是稳定的,它的价值是合理的,但第二个和第三个不是。 他们一直在增长并达到一个巨大的数字(超过 1500 个)。 他们是平等的!!!!
他们应该平等吗?我也不知道this page 这些计数器是否会同时计算托管线程和非托管线程。
我怀疑非托管代码总是启动新线程而不是重用它们,但我不确定。
谁能帮忙? 谢谢
【问题讨论】:
-
是的,听起来 dll 没有重用或没有处理它使用过的线程。
标签: multithreading memory-management windows-services performancecounter