找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 32041|回复: 5

【svchost】svchost这东西占内存是怎么回事儿

[复制链接]
发表于 2014-8-24 19:49:36 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
这个用来齁住系统的服务,然后如果哪些服务出了问题,比如出现了new了没delete或malloc后没free(或HeapAlloc了但是没HeapFree)就会导致这东西巨占内存!(我16 GB的内存能给我四小时填满!这是在任务管理器的性能选项卡看到的。)这个时候就要看它齁住的哪些服务出了问题。

我这里用的是Windows 7 x64,如果你用的是XP,你就不必继续看下去了,对你来说这篇帖子没用,为避免浪费时间请按下Ctrl+W

首先运行任务管理器,转到进程选项卡,菜单->查看->选择列,这里确定“内存 -专用工作集”和“CPU 使用率”是勾选了的状态,点确定。
20140824191059.png
找到这个列表顶部的“映像名称|PID|用户名|CPU|内存(专用工作集)”(它的排序可能不是我写的这样,但是我这么说大致就是这几个词)
这个是在列表最顶部的这一栏,点一下“内存(专用工作集)”,列表内容就会按照进程的内存使用量来排序。如果内存使用量最大的进程是svchost,那就要看看到底是哪些服务占满了你的内存。

因为我这边已经把问题解决了所以不好截图进行手把手的教导。但是至少我可以把大致的处理思路说一下。
1、看这个svchost是在哪个工作组的(菜单->查看->选择列,勾上“命令行”)
我这边看到的命令行是“C:\Windows\System32\svchost.exe -k LocalSystemNetworkRestricted”通过这个可以看出它是LocalSystemNetworkRestricted工作组的。
然后看到它还在不断地增加内存使用量,大约以每秒1 MB的速度不断吃内存。

2、在任务管理器的服务选项卡,在列表的最顶部找到“工作组”,按下它,整个列表就会以“工作组”的方式排序。
我这里看到LocalSystemNetworkRestricted的服务有如下图的几个:
20140824192035.png
有些服务已经结束,而有些服务还在继续。
这里我才用了一个办法:一个一个的试,看谁占用了内存。

我先干掉AudioEndpointBuilder,然后回到“进程”选项卡。好,svchost还在吃内存。看来svchost吃内存这个问题这不是AudioEndpointBuilder导致的。于是我重新启动了AudioEndpointBuilder。

然后干掉CscService,它的作用估计是存储一些浏览器看过的网页(使其变成脱机页面,这样你没联网也能打开这些页面)。好像svchost还在吃内存。看来这不是CscService造成的。我便重新将其启动了。

dot3svc这东西并没启动,无视它。

hidserv这东西好像是辅助USB键鼠运行的东西,看起来如果干掉了我的键鼠可能会失灵,那可是麻烦事儿,还是不管它的好(后面我试过了,干掉它我的键鼠仍然能工作,问题是svchost还在吃内存,看来它并不是导致svchost吃内存的元凶。)

HomeGroupListener是家庭组侦听器,会不会是它导致的?我把它干掉了,然后svchost依然在吃内存。好吧,HomeGroupListener也是无辜的。

Netman(网男人??其实是network manager的缩写)经过测试它也是无辜的。

PcaSvc,这东西估计是保证程序兼容性的玩意儿。暂时没用。干掉它也没用。懒得将其恢复了。

TrkWks也不是导致svchost吃内存的罪魁祸首。

UxSms是啥?我干掉了它,顿时所有窗口的Aero效果都消失了!!!即使这样,svchost依然在吃内存。好,把它恢复起来吧。熟悉的Aero玻璃效果又恢复回来了。诶,我还是很喜欢这种玻璃效果的。

Wlansvc,这个是用来服务我的无线网卡上网的东西吧?干掉它,顿时所有程序断网……

结果发现,svchost不再吃内存了!好,原来元凶是它!
但是没了这东西我就连不了家里的WiFi了。又必须启动它。启动后svchost又开始吃内存了,搞得我foobar2000播放初音未来的消失都是断断续续的……原来内存已经满了,系统开始频繁使用分页文件,硬盘也咔咔咔响。。

我怒了。直接干掉svchost这个进程。顿时所有Aero效果全部消失!网络全部断开!但是别的没啥事儿,foobar2000倒是很流畅地继续歌唱了(初音未来的疑惑)
然后我把Wlansvc恢复起来了,再把UxSms也恢复起来了,桌面Aero效果顿时又回来了。
好像线索全部断了……
……
……(死苍蝇过来!我保证不打死你)




等我想想,很久以前我用的无线网卡是FAST FW150U,150MB的速度,USB接口,后来我拔了它,插了个PCI-E口的Intel无线网卡(这东西怎么看都像是笔记本用的无线网卡装在了一个转接器上,然后转接器是插台式机的那种样式,还有两根粗粗的天线),装了Intel的驱动。但是旧的那个USB无线网卡的驱动我还没卸载。好,果断先干掉它试试。

控制面板->卸载程序,在右上角我开始搜索各种关键词(FW、150、FAST、MAC、WLan、Wireless、Ver3.0、TPLink、Link)终于找到了这个驱动(好像是RaLink什么的东西)

我并没有使用集成的有线网卡,那东西是Realtek的东西,和RaLink无关。然后我的无线网卡是Intel的,也和RaLink无关。于是我就果断把它卸载了。
“卸载本驱动将会导致相关的硬件无法使用。”去你的,我硬件已经拔了!点“是”。然后它消失了。真是干脆。

回到任务管理器,svchost不再吃内存了!网没断!果然是这个RaLink的驱动在不断吃内存!这里我鄙视一下RaLink的程序员:你们是不是叫来了实习生?你这明显是new忘了delete,malloc忘了free,HeapAlloc忘了HeapFree,这种低级错误不可饶恕!許せない!

找到罪魁祸首了。嗯。svchost仍然把持着大约2G的内存。一般人会说“重启吧。重启就好了。”重启个P呀。于是我记下了它所齁住的服务名,然后用任务管理器干掉它(顿时没了网络和Aero效果),再重新启动这些服务(网络重新连接了,Aero也回来了),然后这时的svchost仅仅占用9.5 MB的内存。果然我找到的罪魁祸首。
喝杯咖啡庆祝一下。。。


这里总结一下svchost占内存巨大时的解决思路。我这个是因为有个驱动忘了Free内存导致的,但是大家具体是什么原因那应该有很多的原因的,不可就此盖棺定论。(我百度过svchost占用内存。很多人都说是自动更新导致的,但是这个因人而异,有的人,比如我,开了自动更新它也不怎么占内存)

1、看看你这个svchost进程属于哪个工作组。
2、看看这个工作组里面有哪些服务。
3、一个一个地将这些服务干掉,看看谁在不断吃内存。
4、找到服务后,看这个服务引用了哪些东西(举个例子,Wlansvc是负责管无线网络的,这个一定会直接或间接地引用无线网卡的驱动)
5、根据各自的情况自行解决问题(比如卸载这个驱动等)
回复

使用道具 举报

 楼主| 发表于 2014-8-24 20:01:53 | 显示全部楼层
说“重装系统”的滚粗。
回复 赞! 靠!

使用道具 举报

发表于 2014-8-24 20:06:38 | 显示全部楼层
厉害!肯定比我重装系统慢!!
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2014-8-24 21:11:14 | 显示全部楼层
FFFFFFFE 发表于 2014-8-24 12:06
厉害!肯定比我重装系统慢!!


但是一定比我重装系统快!
对于我,重装系统意味着V+全部音源都要装一遍,UTAU,还有VS各版本,虚拟机等。

顺带我这的网速要下全了所有驱动至少需要12小时
回复 赞! 靠!

使用道具 举报

发表于 2014-8-25 20:10:42 | 显示全部楼层
重装系统后将所有配置做好 然后备份 不就行了?{:soso_e141:}
回复 赞! 靠!

使用道具 举报

发表于 2015-5-1 07:38:42 | 显示全部楼层
向日葵 发表于 2014-8-25 20:10
重装系统后将所有配置做好 然后备份 不就行了?

说得好。并没有什么卵用。。大型软件多的人怎么办
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-11-23 16:16 , Processed in 0.037645 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表