|
|
现在内存的价钱越来越便宜(我年前买的内存1k多1G,头几天朋友买的1G才550元,晕),很多新机标准已经装备了1GB(或更多)的内存,还有很多人也在给老电脑的内存升级。在升级了物理内存之后,如何有效设置虚拟内存才能获得最大限度的性能提升?网上流传的一些优化虚拟内存的方法真的有效吗?如何科学地设置虚拟内存?这些就是本文将要讨论的内容。
我们通常说的一台电脑的快慢,实际上包括四个子系统的性能:CPU,内存,网络和硬盘。这四个方面不能存在瓶颈,否则会严重影响性能的整体性能。不幸的是,在购买机器的时候人们往往注重于CPU的频率,忽略了其它三个组件。特别是某些品牌机,P4的CPU,往往才搭配256M甚至更少的内存,这样的配置,有人反应P4的机器比P3的还慢,就显得很正常了。
本文讨论内存,虚拟内存的配置对机器性能的影响,其它的几个子系统对机器性能的影响,在以后的文章中再讲述。
首先我们看看微软官方的建议。Windows建议把虚拟内存设置成让Windows自动管理。如果非要手工设置,对于虚拟内存,微软建议的设置是物理内存数量的1.5-2倍(分别为虚拟内存的最小值和最大值)。
这样的建议是否合理呢?我们通过一个例子来说明。
假设有两台PC,A机内存128M,B机的内存2G。
按照上面建议,A机的虚拟内存最大是256M,在运行一些需要大内存的程序时肯定会报错,提示虚拟内存不足,比如运行Photoshop处理大图片的时候。
B机的虚拟内存却高达4G,加上2G的物理内存,内存高达6G。日常的操作未必要使用这么多的内存,但是对于硬盘空间来说,这是一个很大的浪费。
接下来我们先分析一下网上流行的所谓的虚拟内存的设置技巧。
一个很出名的技巧是大容量物理内存的用户可以禁用虚拟内存来提高系统性能。
首先我们来分析一下虚拟内存到底是什么以及虚拟内存的作用是什么?
在早期,因为内存价格非常昂贵,因此一般电脑上都不会配置太多,如果有时候操作系统和应用程序需要的内存数量超过了计算机中安装的物理内存数量,操作系统就会暂时将不需要访问的数据通过一种叫做“分页(pages)”的操作方式写入到硬盘上一个特殊的文件中,从而可以释放出部分内存给需要立刻使用内存的程序和数据使用。这个位于硬盘上的特殊文件(也可能是一个特殊的分区,比如Linux的swap分区)就是分页文件(也就是虚拟内存文件或叫做交换文件)。对于Windows 2000/XP/2003操作系统,分页文件名为pagefile.sys,默认情况下位于操作系统所在分区的根目录下(也可以手工指定在其它的分区,不过都是在跟目录下)。
正因为存在上述的机制,才有了大内存禁用虚拟内存能提高系统性能的说法,因为内存的速度远远高于硬盘的速度。然而根据Windows的设计,Windows 的许多核心功能都需要使用分页文件(不管此时有没有空余的物理内存),而如果你禁用了所有分页文件,有些第三方的应用软件都可能会遇到内存不足的错误(最明显的是早前版本的Photoshop图形处理软件)。其实在不需要的时候,Windows并不会频繁使用分页文件,因此这样调整系统你并不能获得任何性能上的提高,只是增加了更多的报错提示。
另外一个技巧是使用释放内存的软件,周期性地把内存中的数据强行写入分页文件来释放更多的物理内存。对于这种做法,首先我们要明白,任何程序,只要被执行,就会占用一定的内存空间(具体占用多少内存则取决于程序自己的体积以及载入的数据文件的大小),强行把这些空间中的数据转移到硬盘上,看起来剩余的物理内存是多了,但是这些程序很快又会按照windows或者自己的计算方式做一次相反的操作。
想象一下这种情况:当你的物理内存数量不多,而又运行了比较大型的程序后,必然导致物理内存数急剧减少,按照“优化软件”的设计目的,这时候它开始自作聪明,把占用内存的数据往硬盘上进行分页,而程序的运行确实需要这些数据,导致的结果就是同一时间内,“优化软件”试图将数据分页到硬盘,而操作系统又把数据从硬盘读取到内存,正好是两个相反的操作,这样就极大增加了硬盘的读写,降低了系统的性能。
内存优化的软件在早期的16位操作系统上可能是有效的,因为那时的操作系统由于本身设计的原因,在内存管理上存在问题,或者程序设计不规范,导致程序占用内存后退出时不能及时释放内存的现象。对于32位的操作系统,内存的管理已经日趋完善,不需要这些软件来帮忙了。
为了合理设置虚拟内存大小,首先我们必须知道系统正常运行的时候到底需要多少内存。Windows自带的性能监视器就可以很好第完成这个工作了。 |
|