- UID
- 1
- 精华
- 积分
- 76310
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
这个用来齁住系统的服务,然后如果哪些服务出了问题,比如出现了new了没delete或malloc后没free(或HeapAlloc了但是没HeapFree)就会导致这东西巨占内存!(我16 GB的内存能给我四小时填满!这是在任务管理器的性能选项卡看到的。)这个时候就要看它齁住的哪些服务出了问题。
我这里用的是Windows 7 x64,如果你用的是XP,你就不必继续看下去了,对你来说这篇帖子没用,为避免浪费时间请按下Ctrl+W
首先运行任务管理器,转到进程选项卡,菜单->查看->选择列,这里确定“内存 -专用工作集”和“CPU 使用率”是勾选了的状态,点确定。
找到这个列表顶部的“映像名称|PID|用户名|CPU|内存(专用工作集)”(它的排序可能不是我写的这样,但是我这么说大致就是这几个词)
这个是在列表最顶部的这一栏,点一下“内存(专用工作集)”,列表内容就会按照进程的内存使用量来排序。如果内存使用量最大的进程是svchost,那就要看看到底是哪些服务占满了你的内存。
因为我这边已经把问题解决了所以不好截图进行手把手的教导。但是至少我可以把大致的处理思路说一下。
1、看这个svchost是在哪个工作组的(菜单->查看->选择列,勾上“命令行”)
我这边看到的命令行是“C:\Windows\System32\svchost.exe -k LocalSystemNetworkRestricted”通过这个可以看出它是LocalSystemNetworkRestricted工作组的。
然后看到它还在不断地增加内存使用量,大约以每秒1 MB的速度不断吃内存。
2、在任务管理器的服务选项卡,在列表的最顶部找到“工作组”,按下它,整个列表就会以“工作组”的方式排序。
我这里看到LocalSystemNetworkRestricted的服务有如下图的几个:
有些服务已经结束,而有些服务还在继续。
这里我才用了一个办法:一个一个的试,看谁占用了内存。
我先干掉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、根据各自的情况自行解决问题(比如卸载这个驱动等) |
|