我注意到我的系统正在变慢,并且 services.exe 经常占用相当多的 CPU(大约 10-40%),尤其是在唤醒 PC 之后。
我发现很难找到有关 services.exe 的更多信息以及实际导致此问题的原因。
但是,我发现 services.exe 进程中有超过 1,000 个线程在运行,这很可疑。所以这可能是第一个线索。大多数线程都在 RtlValidateHeap 中:
ntdll.dll!ZwWaitForWorkViaWorkerFactory+0xa
ntdll.dll!RtlValidateHeap+0x3bb
kernel32.dll!BaseThreadInitThunk+0xd
ntdll.dll!RtlUserThreadStart+0x21
那么,推荐什么方法来识别这类问题呢?
更新:可能是 Eclipse 或某些插件与此问题有关。关闭 Eclipse 后,线程数下降到 100 多个,重新启动后又回到 1,000 多个。
答案1
services.exe 进程的正常子进程数约为 70-100。(平均有 7-10 个子进程)。原帖发布的内容可能是所有子进程的总和。
Eclipse 的运行会将自身附加到 services.exe,因为它利用了多个(数百个)内置宏和算法,而 Eclipse 不需要运行这些宏和算法,因为它们内置在 Windows 中。正如我之前提到的,这些运行项作为子进程(或您提到的线程)附加到 services.exe。
这解释了为什么它在运行程序时会出现峰值。完全正常。这是一个密集型程序,通过在启动时将所有可能的算法和宏预加载到 Services.exe 中来缩短处理时间。
希望这能有所帮助!这里没什么可担心的。如果你担心它是病毒,可以用 Malwarebytes 扫描,但我以前在我的计算机实验室见过它。正常。
答案2
我认为这不正常,谁需要 1000 个线程?您可以做的是,您可以安装 StraceNT for Windows 并调试进程,看看它到底在做什么。
如果在 Windows 上可用,请使用 -f 选项,它将跟踪子进程。
您也可以尝试重新调整该过程。