我正在构建一个使用非托管C++ dll的.NET windows服务。我的服务和c++动态链接库都使用多线程。在处理过程中,经过一段时间(几个小时)后,内存耗尽。我尝试使用“性能计数器”来测量线程的数量,并监控以下值:# of current recognized threads我怀疑非托管代码总是启动新的
有时,某些应用程序或进程被困在无限循环中,使用100% CPU,但只使用一个内核/线程,所以在一个4核系统上,它使CPU使用率达到25%,没有触发警报,尽管我想知道这种情况是否会发生。它不只是将阈值设置为CPU使用率的25%,因为在系统上运行的所有进程的总和很容易超过25%,但这并不能检测到只有一个进程/线程负责时的情况。我发现在性能监视器中,我可以添加\ process (进程名称)\%处理器时间,如果单个进程在最大负载下运行,并且在核心i7上的任务管理器中显示12% (例如,您可以通过使用LameX