我的一个应用程序有问题。我运行应用程序,一切正常。当我关闭这个应用程序时,我注意到系统中的一个“svchost”进程占用了大约 95-100% 的 CPU,我必须弄清楚是什么占用了这么多 CPU 周期。
我为自己设定了非常简单明了的目标:
- 获取进程信息或占用大量 CPU 的特定“svchost”
- 我知道 svchost 进程是用来做什么的,所以我省去了你们向我解释它的时间。所以现在我必须知道这个流氓 svchost 加载了哪些模块。
- 我运行我的应用程序,关闭它并确保我的进程完全关闭,不再在内存中。然后我得到了占用 100% CPU 的 svchost 的 PID
- 我运行了 ProcessExplorer(来自 sysinternals),获得了有关此 svchost 托管了多少服务以及哪些服务的信息。他们大约有 12 项服务。我不会理会这个列表,因为我更关心如何识别这 12 个服务中的哪一个正在占用 CPU 周期。
- 现在我有了清单,这里开始棘手的部分......我想做以下 2 个选项中的 1 个
选项 1: 如何确定这 12 项服务中的哪一项占用了如此多的 CPU?我能否获得此 svchost 进程的扩展信息,它为我提供了基于此进程中托管的“每个服务”的详细信息,而不是基于我现在拥有的进程?
选项 2: 是否可以配置 windows 以使 svchost 每个 svchost 实例仅运行一项服务?
如果在如何调查方面有更好的选择,缩小此问题的根本原因,请告诉我。