为什么Vista用掉了系统所有内存?
2007-05-07 15:01:41 来源:WEB开发网Windows Vista对内存管理的方法与其他windows可不同.从下图的任务管理页面的物理内存参数项(Physical Memory)可以看到:
Windows Vista任务管理器
只有6M内存显示的是空闲状态,而此刻Vista系统上仅仅运行了IE7浏览器的几个窗口和几个远程桌面管理程序而已。为什么只运行了很少的应用却只剩下6M的空闲物理内存了呢?
下面的图片反映的是运行类似应用的XP系统的任务管理器页面的参数表现:
Windows XP任务管理器
在可用物理内存参数(Physical Memory, Available)项上大约有1.5Gb的物理内存可用呢。
究竟怎么回事呢?为什么在Vista上运行这么一点应用就消耗了这么多的物理内存呢?
为了揭开这个疑惑?让我们先来考察一下写字板应用程序的工作原理,以便认识计算机物理内存的用处,假设用户需要利用写字板程序来创建一个新的文本文件:
双击写字板程序图标打开应用程序。
写字板程序的可执行文件被从磁盘调入内存。
写字板程序在内存中执行。
写字板程序分配出空闲内存来存放你创建的文本文件的内容。
看起来写字板程序执行仅需要消耗很少的内存,另外显示保存文本内容的内存也不是很多,最多几兆不得了了,那剩下的系统内存用到哪里去了呢?
现在你必须把内存当作缓存来看待,就象是CPU中的第一级缓存和第二级缓存那样,内存也是存在计算机中心计算单元和存储数据的磁盘介质之间的另外一种高速缓存装置。
而缓存装置的重要设计规则就是:“空闲的缓存就是浪费了的缓存”,空缓存对用户是没有帮助的。每种缓存的主要目的就是尽量提高所需数据处理的速度,否则你还不如直接到硬盘等磁盘介质中去取数据来完成运算。硬盘中直接提取数据到处理器进行运算是非常慢的。
2006年1月份,工程师Diomidis Spinellis在普通办公电脑上总结出了缓存性能比例的一张参考表:
正常状态 | 最差情况 | 持续的 | 生产性能 | |||
部件 | 大小 | 反应时间 | 吞吐量 | 1美圆购买的容量 | (每美圆每秒读取的字节数) | |
(MB/s) | 最差情况 | 最好状况 | ||||
CPU内部一级数据缓存 | 64 KB | 1.4ns | 19022 | 10.7 KB | 7.91·1012 | 2.19·1014 |
CPU内部二级缓存 | 512 KB | 9.7ns | 5519 | 12.8 KB | 1.35·1012 | 7.61·1013 |
DDR类型的物理内存 | 256 MB | 28.5ns | 2541 | 9.48 MB | 3.48·1014 | 2.65·1016 |
硬盘容量大小 | 250 GB | 25.6ms | 67 | 2.91 GB | 1.22·1011 | 2.17·1017 |
总结上表数据可以看出,各种缓存比硬盘快出的倍数:
系统物理内存 | 37倍 |
CPU第二级缓存 | 82倍 |
CPU第一级缓存 | 283倍 |
上面的数据解释了为何在VISTA下的空闲物理内存只有6兆的原因,Vista把绝大多数物理内存都当成了一个名叫超级预存取块,即 SuperFetch的缓存装置,Vista利用SuperFetch内存缓存装置,动态地把系统经常需要用的后台程序和磁盘数据预先提取到缓存中,随时加速应用的运行。这就是Vista管理内存不同与XP等系统的地方。
SuperFetch的内存管理设计方法,对玩大型的游戏程序时,表现的效果尤为突出,比如BattleField 2游戏。
更多精彩
赞助商链接