更新时间:2024-08-26 20:46
Superfetch内存管理机制会将用户可能使用的应用程序页面利用内存可用空间进行预加载;尽可能地避免系统发生从硬盘的页面调用;让应用程序最快速度开启;不会由于计算机长时间闲置而使突然使用变得响应迟缓;在退出大型应用程序后会主动将之前被迫转移到虚拟内存中的页面重新调入内存当中。
Vista
下面的Superfetch技术,即“超级预读取”,由XP系统中的Prefetch进化而来。
下面,先说什么是Prefetch:
在Windows XP操作系统中,微软对虚拟内存技术做了进一步改进,发展出了预取技术(Prefetch),预取技术的基本思路是,在载入某个程序之前,预先从硬盘上中载入一部分该程序运行所需的数据到物理内存中,这样便能加快程序的启动速度。
物理内存中。这项任务完成之后,Windows才继续载入被中断的程序。
经过这样的处理之后,在程序运行过程中,需要读取那些文件时,由于文件已经被“预取”到内存中,此时就不用再到硬盘上进行读取,因此减轻了程序载入过程中频繁交换内存页面与交换文件的现象,改善了内存不足时程序运行的响应速度。
为了进一步优化预取操作的效率,Windows XP还会定期对pf文件进行分析处理,组织好程序文件ini文件中。同时还会通知磁盘碎片整理程序,在下次运行碎片整理时,按照Layout.ini文件记录的内容,将相关文件的位置整理在连续的硬盘区块中。
这项技术从根本上说仍然属于被动式的调度。换句话说,只有在程序主动发起载入请求时,Windows才会进行相关的调度操作。
被动式调度的存在可能对系统性能造成一些影响。我们考虑这样一个例子,假设你有在工作的午休时间运行杀毒软件的习惯,那么在下班前,一般会停止处理工作程序,然后运行杀毒软件,此时,如果使用的是Windows XP,那么操作系统会将工作程序所占用的内存页面写入硬盘交换文件中,并读取杀毒软件的文件载入内存。午休过后,杀毒软件已经运行完毕,但是你在重新开始使用工作程序的时候,系统仍然需要经历杀毒软件和工作程序的硬盘交换文件与内存页面的交换过程,此时程序的响应速度明显降低。
如果系统能够进一步自动记录下这些经常性的操作行为所发生和结束的时间,当时运行的前台和后台软件等等详细情况,那么在内存有空闲空间的时候,就可以在预定的时机预先将一部分文件载入到内存中,这样就避免了上面例子中发生的不愉快情况。
什么是Superfetch
不错,这正是Windows Vista中Superfetch技术所能解决的问题。由于采用了新算法,Superfetch不但继承了Windows XP预取技术的全部优点,还进一步具备监视程序运行时状况,时间等详细情况的功能,可以根据用户的使用习惯,自动预先将存放在硬盘的交换文件转换到内存页面中去,使用户经常运行的程序启动时的速度得到进一步的加快。
Superfetch技术的中心思想是:“过分空余的内存空间即是浪费”。的确,如果一个操作系统总是保留着过多的空余物理内存耗费电能,却不能够利用这些多余的内存空间提高系统性能的话,为什么不更好地利用这些多余的内存空间呢?将这些多余的物理内存作为缓存使用,就是Superfetch技术的本质。而也正是由于采用了这种以内存为缓存的策略,才造成了Vista对内存容量的饥渴!
如果你对这项技术感到反感,或者物理内存容量实在太小,那么到管理工具—服务中关闭Superfetch服务也是一种选择。但需要注意的是,如果再次开启Supertech服务,那么由于需要经过一段监视记录用户使用习惯的过程,因此需要等待较长一段时间后,Superfetch技术才能重新为系统带来明显的提速效果。
打开2008的Superfetch
首先:SuperFetch的目的是提升前台进程的性能,预取前台进程的内容。而Windows Server 2008主要目的是用作服务器,几乎很少有前台进程,所以没有采用SuperFetch技术。然而可以打开:
打开注册表编辑器
新建 DWORD 项 名称为 EnablePrefetcher 数值为 3
新建 DWORD 项 名称为 EnableSuperfetch 数值为 3
打开 服务 ,将SuperFetch设为 自动 可以立刻启动成功
Superfetch
并不是一个新的技术,在Vista时代就已经开始采用,不过鉴于用过Vista的人数比较少,而XP时代的各种电脑技巧始终还深入人心,所以很多人都在疑问为何Windows 7内存占用如此之大。
Superfetch内存管理机制会将用户可能使用的应用程序页面利用内存可用空间进行预加载;尽可能地避免系统发生从硬盘的页面调用;让应用程序最快速度开启;不会由于计算机长时间闲置而使突然使用变得响应迟缓;在退出大型应用程序后会主动将之前被迫转移到虚拟内存中的页面重新调入内存当中。这样看起来似乎专业了点,所以接着往下看,会很好地对这些特点进行理解。
为何第一次启动程序会感觉很慢
相信大家都有过类似的经历。当我开机后,第一次运行一个程序,就比如说是Word吧,可能需要5秒才能启动。当我关闭后再开,也许只用2秒。如果我不关闭,直接打开另外一个Word文件,那就更快了。
这是什么原因造成的呢
当我们开机后,工作集里面没有Word这个员工(页面),他还在家(硬盘)里面。于是当我召唤他的时候,它才从家走到办公室(工作集)。这样的过程就叫做硬调页了,当然需要的时间长。而当我们关闭了Word时候,他就被派往大厦的另一房间,我却马上再次召唤他,这时,另一个房间内的数据还没被清零,他便不用从家里走来,而是直接从数据结构里面引入就可以了。在不关闭这个程序Word的情况下,他也不用为其他程序让路的时候,它还存在于办公室(工作集)里面,召唤他的时候就会更快。这样的无需从硬盘中重新调用数据,而是将数据结构中的页面重新挂载到工作集中的过程,便叫做软调页了。大家都知道内存速度远远快于硬盘,所以软调页的使用就是第二次运行程序变得很快的原因了。
Windows 7内存占用大的原因
至2014年,我们知道了当内存中有所需程序页面的时候会使程序启动变得更快。而Windows 7中的Superfetch已经具有了学习的功能,自从第一次使用Windows 7时,Superfetch就开始记录我们的使用习惯,将我们经常使用的程序的页面在开机后进行提前加载,那么当我们第一次开启程序的时候便可以获得像第二次开启一样的速度了。所以这些预加载的页面就会使得我们的内存占用变多。简单地说就是让所有程序操作在内存中进行,避免使用硬盘硬调页空间,这也就是为 何感觉Windows 7占用很大内存的原因。
查看预加载的内存
而在XP时代,也许你也有过类似的经历:当开始使用一些程序后,由于有事便离开了。回来的时候却发现系统响应十分缓慢,特别糟糕。这是由于XP的内存管理模式效率非常低下。
当我们离开后,程序都处于不使用状态。这时系统的一些后台程序,如磁盘整理、杀毒软件等程序就会全速运行,导致我们使用的一些程序页面不得不被挤到了硬盘虚拟内存中。可是当这些后台程序完成任务后,XP系统并不会把之前被挤到虚拟内存的页面导回内存里。于是在再次使用电脑时,系统才会手忙脚乱的进行临时调配,甚至是硬调页。导致程序响应极其迟缓。所以看上去XP的空闲内存很多,事实上都没起什么太大的作用。
使用建议
任何人都希望通过优化的手段让自己的电脑运行速度达到最理想的状态,而内存又是影响电脑运行速度非常重要的因素,我们在了解了Windows 7的内存管理机制,再来介绍哪些方法可以给系统加速。
1、多使用休眠和睡眠
由于SuperFetch要在开机后进行预加载,所以建议大家不要关机。尽量使用休眠或睡眠,这样SuperFetch的预加载内容就会保留。从而提高速度和效率。
2、使用ReadyBoost
很多从XP升上来的用户由于系统的内存不够大,所以无法全面的发挥SuperFetch的功能。我们可以使用ReadyBoost功能来帮我们解决这个难题。
只要符合条件的闪存都可以加速我们的系统。ReadyBoost功能是利用闪存的容量作为SuperFetch预加载页面的储存空间。但由于微软采用了特殊的算法,所以并不会影响闪存的寿命。还有,用于ReadyBoost的闪存最好为物理内存大小1~2.5倍。如果系统物理内存足够大的话,就没有必要使用ReadyBoost了。右键点击U盘盘符选择属性,切换到readyboost一栏,速度达到标准的U盘都可以开启这个功能。
Windows8/8.1默认开启Superfetch,对于平常使用的程序响应速度会有较明显的加速作用,特别当大内存配置时。由于win8/8.1用户普遍发现开机后有短暂发生磁盘占用100%的情况,被认为可能是开机后短时间内系统响应缓慢的诱因之一。
Windows8 要设置好 Superfetch 服务
控制面板 – 管理工具 – 服务 – Superfetch – 启动类型 – 自动(延迟启动)(默认启动类型为自动无延迟),可以避免刚启动好Win8对硬盘的频繁访问,而不建议直接禁用该服务。
在Windows 10 1809以后,此服务名已改为SysMain。