svchost.exe作为其宿主,通过调用不同的系统模块,执行不同的命令行来执行不同的任务。可以认为它是一个空壳,通过外部的,模块化的,分散化的内容来发挥作用。
下面来举例。通过开始——运行——services.msc可以打开如下图所示的窗口,即为系统提供的管理工具(家庭版系统中可能不存在该文件):
随机打开一个,例如下图所示:
注意可执行文件的路径及其后的参数。这是一个典型的例子。但是并非所有服务都通过svchost.exe来执行。如下图:
在这里,我需要强调一点:Windows下的服务通常来说都发挥着重要的作用,但并非完全不可或缺。svchost.exe也不例外。
我的结论为:当svchost.exe长时间占用大量CPU时,一定说明系统出现了问题。
具体的排查方法,可以按照下列步骤进行:
在任务管理器中找到对应的svchost.exe,如下图所示:
点击右键,选择“转到服务”。例如下图所示:
根据服务的必要性与重要性,根据情况选择结束进程或进行下一步分析。具体分析工具可以选择百度搜索,也可以手动使用Process Monitor等工具进行占用分析。具体原因可能多种多样,无法给出统一的答案,很可能分析半天仍没有头绪。这也正是很多情况下,长时间的分析并不如重装系统来得有效的原因。
总而言之,一般来说,问题可能出在以下几个方面:
其一,长期读取某一个文件,造成死循环,导致CPU占用率较高。我遇到过Vista下长期读取hosts导致资源占用过高的情况。
其二,网络资源占用过大。这也是最常见的原因。这与DNS、网关、局域网状况等有多方面的关系,不可一概而论。
其三,其他问题。其实这部分我说不出来……简而言之是各种其他千奇百怪的问题,这种情况下,重装系统是唯一可能的选择。
我们需要记住,解决一切计算机问题的主要原则是:具体问题具体分析。
我们无法对问题表现相同的的问题提出一个通用的解决方案,但是,我们可以从多个角度下手,对个别问题作出自己的判断。