我有一个应用程序出现了问题。我运行应用程序,一切正常。但当我关闭这个应用程序后,系统中的一个"svchost"进程占用了大约95-100%的CPU,我需要找出是什么占用了这么多的CPU周期。
我的解决方法非常简单和直接:
- 获取占用大量CPU的"svchost"进程的信息
- 我知道"svchost"进程的用途,所以不必要解释。现在我需要知道哪些模块被这个恶意"svchost"加载。
- 运行应用程序,关闭它,并确保我的进程完全关闭,不再在内存中。然后,我获取了占用100% CPU的"svchost"的PID。
- 我运行了ProcessExplorer(来自sysinternals),获取了有多少和哪些服务由此"svchost"托管。它们大约有12个服务。我不会去烦恼这个列表,因为我更关心的是如何识别这12个服务中哪一个占用了CPU周期。
- 现在我已经有了这个列表,这里开始棘手的部分......我想执行以下两种选项之一:
选项1: 如何确定这12个服务中的哪一个占用了这么多CPU? 我可以获取托管在此进程中每个服务的详细信息,而不是现在我所拥有的进程基础上的信息吗?
选项2: 是否有可能配置Windows使得每个svchost实例只运行一个服务?
如果有更好的方法来调查、缩小这个问题的根本原因,请告诉我。