我正在运行 Windows 7。看来 svchost 占用了大量内存。
该 svchost 实例的用户名是“网络服务”。描述是“Windows 服务的主机进程”。
有时它会占用 50% 的 CPU 使用率。其他时候,它只占不到 5%。我不知道什么时候是 50%,什么时候不是。但它经常波动——即使我刚刚启动并且没有启动任何程序。
我该如何诊断这个问题?
答案1
SVC Host 由您机器上运行的许多服务组成。我建议您右键单击它并选择“查看服务”以查看实际导致该问题的原因(选择显示所有用户的进程后)。
您还可以使用 Microsoft/Sysinternals进程探索器它将更详细地向您展示正在发生的事情。
(将鼠标悬停在进程资源管理器中的 svchost.exe 进程上)
答案2
问题在于多个服务共享一个进程(一个非常愚蠢的设计)。这种共享意味着如果其中一个服务使用了大量内存,您无法轻易识别它。更糟糕的是,如果其中一个服务崩溃,所有服务都会崩溃。同样,如果您想关闭臃肿的混乱系统,其中包含的所有服务都会崩溃。
那里是除了恼怒地望而却步之外,您还可以对任务管理器中该进程的服务列表进行一些处理。您可以将这些服务隔离到自己的svchost.exe
进程中以继续调查。如果某个服务svchost.exe
占用大量内存并且只包含一个服务,那么它就是罪魁祸首。
我会先找出可能的罪魁祸首,比如 Windows 更新,它已知会导致svchost.exe
腹胀。
最近有一个修复 Windows 更新可能会帮助解决此问题. KB3050265 以及其他内容,“... 解决了扫描期间系统性能可能下降的问题。此问题对物理内存较少的计算机影响最大。”
有一个关于服务隔离的超级用户问题,如果您想尝试一下:“在其自己的进程中隔离托管服务 (svchost.exe)“。
以下是问题发生的屏幕截图,在 Windows 更新服务已被隔离到其自己的进程的系统上,确认它是罪魁祸首:
这是应用 KB3050265 补丁后同一系统上的任务管理器窗口的截图。现在的典型行为是更新服务占用大约 300 兆字节的空间(比以前小得多),同时占用 100% 的处理器。虽然不理想,但对系统响应能力的影响大大减轻。几分钟后它就完成了,消失了:
答案3
除了 Sysinternals Process Explorer 之外,还有一个不错的开源实用程序可以分析 svchost 正在执行的操作:svchost 查看器