已缓存和可用内存有什么区别

来源:百度知道 编辑:UC知道 时间:2024/06/06 19:24:08
vista系统中,有个已缓存,我的电脑1.5G,实际使用内存%50左右,但是可用内存从开机开始过1分钟就变0,但同时已缓存就增加到1G,电脑操作一点也不卡。
有谁能解释下为什么吗?
不要说什么病毒之类的,不大现实。。。
很想不明白,我开机一点事都不做,电脑拿什么东西变成已缓存啊。。。

内存管理器的重大改变体现在它对物理内存的管理方式。先前版本 Windows 所使用的“待机列表”管理有两个局限性。首先,页面的优先化仅取决于进程最近过去的行为,而不会预见到它们未来的内存需求。其次,用于优先化的数据仅限定 于进程在任意给定时刻所拥有的页面列表。这两个缺点会导致出现“午餐后综合症”之类的状况,即您离开计算机一段时间,但需要内存密集型的系统应用程序在此 期间一直都在运行(例如病毒扫描或磁盘碎片整理)。此应用程序会强制您的活动应用程序已在内存中进行缓存处理的代码和数据由内存密集型活动重写。等您回来 后,就会发现性能变得非常缓慢,因为各应用程序必须从磁盘请求它们的数据和代码。
Windows XP 采用了预取支持,该功能基于以前的引导和应用程序启动来执行大规模的磁盘 I/O,以向内存预加载所预期到的代码和文件系统数据,从而改进了引导和应用程序启动性能。Windows Vista 凭借 SuperFetch 又向前迈进了一大步,SuperFetch 是一种通过历史信息和前瞻性内存管理来增强“least-recently accessed”(最近最少访问的)方法的内存管理方案。
SuperFetch 作为在服务主机进程 (%SystemRoot%\System32\Svchost.exe) 内运行的 Windows 服务在 %SystemRoot%\System32\Sysmain.dll 中实现。该方案依赖于内存管理器提供的支持,因此它可以检索页面使用历史,以及引导内存管理器将来自磁盘文件或分页文件的数据和代码预加载到“待机列表” 中,并为各页面指定优先级。SuperFetch 服务基本上是将页面跟踪扩展到曾经存储在内存中但已被内存管理器重新使用以为新数据和代码让出空间的数据和代码。该服务会将这一信息存储在 %SystemRoot%\Prefetch 目录中扩展名为 .db 的场景文件中(位于用于优化应用程序启动的标准预取文件旁边)。在对内存使用情况的这种深入了解基础上,SuperFetch 可在物理内存变为可用时预加载数据和代码。
只要内存变为可用(例如,当某应用程序退出或释放内存时),SuperFetch 便会要求内存管理器提取最近被驱出的数据和代码。这将以每秒少数几