物理内存充足的情况下是否需要禁用虚拟内存
问题:12G内存。如果是,Win8下面如何操作?
回答:先纠正一个误区,虚拟内存是不能禁用的。“虚拟内存”,应该指的是页面文件(paging file,pagefile.sys),是操作系统将部分虚拟内存页面换到磁盘上存放的数据。文章较长,可以直接跳到最后一段看结论。
我们先看看物理内存中有什么数据吧,我也是12G内存,物理内存中不仅存放了各个进程的数据(Process Private部分),还有许多预读进来的文件(Mapped Files),这些内容可以用微软提供的工具RAMMap来查看。操作系统会猜测你的接下来要使用哪些文件,或者你运行的进程接下来很可能读写哪些文件,然后把这些文件预读到内存中,到你真正需要的时候,打开这些文件就会非常快了。
认为页面文件不好的一个观点是,页面文件中的数据需要从磁盘读入,而磁盘的读写速度是远远低于内存的读写速度的,关闭页面文件,强迫所有分页留在内存里面,可以提升性能。看起来似乎有道理,不过内存应该留给最需要的任务来使用,有过一个进程并不是特别活跃,那么完全可以把他的分页换到磁盘上,把内存腾出来留给更需要使用这块内存的任务,或者映射更多的文件到内存中提高命中率。这一点在微软的一名技术专家Mark Russinovich的一篇博文中提到过。
另外一个认为页面文件不好的观点是,页面文件的存在会频繁的读写磁盘,会降低SSD这类特殊磁盘的使用寿命。微软也在一篇关于Windows 7优化的文章(Support and Q&A for Solid-State Drives)中指出,Windows 7是为SSD优化过的,对于页面文件的读写操作的比例大约是40:1,绝大部分是读操作。读操作读取的数据一般都比较小,而写操作写入的数据相对都比较大,这些设计是有考虑过SSD寿命的问题的。
另外,在系统崩溃的时候生成错误报告也是需要依赖页面文件的,禁用页面文件会使得这个功能受到影响。不过除了开发者,可能很少人会知道错误报告和dump怎么使用,这一点就忽略吧。
综上所述,至少在Windows 7或更新版本的系统中,无论物理内存有多大,页面文件的存在都是积极而且有益的。如何更好地调度和管理内存,这个工作就交给Windows自己去做吧,微软的工程师都帮我们做好了,至少不会比我们自己管理要差。至于禁用页面文件,是可以的,当且仅当磁盘空间不足的时候。