杀毒软件卡机的占用解析
说了这么多是不是发现内存占用和卡机无关?也不是,关键点还没有出来。如果一个杀毒软件占用内存居高不下,而系统可用的物理内存十分有限时,会出现一个不正常现象——空闲内存欠载。简单说就是内存满了,再也放不下数据了。此时windows不得不调用虚拟内存来模拟所有的内存分页,也就是用磁盘代替一部分内存的功能。当然CPU是不能直接读取磁盘上的分页文件的,所以工作过程应该是磁盘分页——>物理内存——>CPU——>物理内存——>磁盘分页,而内存充足时的工作流程是物理内存——>CPU——>物理内存。
很明显磁盘分页到内存之间的数据读写是极大的瓶颈,尤其是随机读写能力极低的硬盘(如果采用了readyboost加速的闪存,磁盘分页的随机读写性能会上升,但是CPU占用会加大)。此时进行任何操作都会非常卡(命名为卡机2),而且CPU占用还不高(磁盘操作不依赖CPU,除非你还在用PIO模式,囧)。不过大部分厂商肯定不会不考虑到这个,所以基本上会把一部分特征库驻留,另一部分回收掉,以此平衡内存占用和性能。
随着内存的总量逐渐加大,很多杀毒软件都开始使用"智能"的动态内存分配,根据现有的内存状况,调整自己的内存占用。但是在小内存系统上这个技术效果不佳。首先由于内存不足,动态分配肯定是会及时回收特征库和虚拟引擎,也就是说每个监控周期都在重复加载这些数据,所以卡机1的时间会延长,不明显的卡机变成明显的卡机。
所以结论很明显:
大内存机器的杀毒软件卡机,基本上都是卡机1;
小内存的卡机如果是动态分配很优秀的杀毒软件,是卡机1,如果是占用内存的大户,基本上是卡机2;
大内存机器显然很适合特征库巨大,启发一般般的杀毒软件;
小内存机器最好还是以启发为主,用CPU弥补内存的不足。如果两个都不行,你最好用回老版本杀毒软件或者更新机器。
注:一般卡机1叫做卡U,卡机2就是我们常说的卡机;大小内存的界定,以今时今日的杀软为标准,应该在512MB。
网友评论