win7/win10的物理内存(RAM)12G还需要虚拟内存吗?

     最近发现C盘越来越小?我的物理内存12G但是查看C盘下的隐藏文件pagefile.sys居然占用10G硬盘空间,hiberfil.sys占用4.75G总共14G多空间白白浪费,考虑到 hiberfil.sys是休眠文件,有时候会用到先不管它,面对 pagefile.sys这么超大文件是否采取措施值得考虑。上网查了下,大多数人认为虚拟内存可以禁用,但是也有反对声音,以下是作者认为比较靠谱两种说法:
不要禁用观点:
作者:余天升
链接: https://www.zhihu.com/question/20728404/answer/15984205
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

先纠正一个误区,虚拟内存是不能禁用的。 @夏昊Filmmaker君所说的“虚拟内存”,应该指的是页面文件(paging file,pagefile.sys),是操作系统将部分虚拟内存页面换到磁盘上存放的数据。文章较长, 可以直接跳到最后一段看结论

我们先看看物理内存中有什么数据吧,我也是12G内存,引用 以前的一个回答,物理内存中不仅存放了各个进程的数据(Process Private部分),还有许多预读进来的文件(Mapped Files),这些内容可以用微软提供的工具 RAMMap 来查看。操作系统会猜测你的接下来要使用哪些文件,或者你运行的进程接下来很可能读写哪些文件,然后把这些文件预读到内存中,到你真正需要的时候,打开这些文件就会非常快了。

认为页面文件不好的一个观点是,页面文件中的数据需要从磁盘读入,而磁盘的读写速度是远远低于内存的读写速度的,关闭页面文件,强迫所有分页留在内存里面,可以提升性能。看起来似乎有道理,不过内存应该留给最需要的任务来使用,有过一个进程并不是特别活跃,那么完全可以把他的分页换到磁盘上,把内存腾出来留给更需要使用这块内存的任务,或者映射更多的文件到内存中提高命中率。这一点在微软的一名技术专家Mark Russinovich的一篇博文中提到过:
Some feel having no paging file results in better performance, but in general, having a paging file means Windows can write pages on the modified list (which represent pages that aren’t being accessed actively but have not been saved to disk) out to the paging file, thus making that memory available for more useful purposes (processes or file cache). 
Technet - Pushing the Limits of Windows: Virtual Memory

另外一个认为页面文件不好的观点是,页面文件的存在会频繁的读写磁盘,会降低SSD这类特殊磁盘的使用寿命。微软也在一篇 关于Windows 7优化的文章(Support and Q&A for Solid-State Drives) 中指出,Windows 7是为SSD优化过的,对于页面文件的读写操作的比例大约是40:1,绝大部分是读操作。读操作读取的数据一般都比较小,而写操作写入的数据相对都比较大,这些设计是有考虑过SSD寿命的问题的。

另外,在系统崩溃的时候生成错误报告也是需要依赖页面文件的,禁用页面文件会使得这个功能受到影响。不过除了开发者,可能很少人会知道错误报告和dump怎么使用,这一点就忽略吧。

综上所述,至少在Windows 7或更新版本的系统中,无论物理内存有多大,页面文件的存在都是积极而且有益的。如何更好地调度和管理内存,这个工作就交给Windows自己去做吧,微软的工程师都帮我们做好了,至少不会比我们自己管理要差。至于禁用页面文件,是可以的,当且仅当磁盘空间不足的时候。

其他相关文章:
64 bit - Can Windows 7 pagefile be turned off if 4GB of hi-speed RAM present?  

可以禁用的观点:
作者:Jirap Chung
链接: https://www.zhihu.com/question/20728404/answer/43884829
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

我是赞成大内存,没有必要打开虚拟内存。实际上并不能太过神化操作系统内存交换算法。内存页发生交换,并不是想象中“不够用”的时候发生的,也就是说,就算你有100G的内存,这样的交换还是每时每刻会发生的,因为系统运行的过程中,总会存在不活跃的进程,经过一系列的系统调度算法过后,即使系统可用内存量富余,还是会被交换到硬盘中。有人说“有些软件”没有虚拟内存会出错,会无法运行,这个绝对是一个误解。现代操作系统的存在很大一个作用是分配、管理和保护资源,没有任何一条操作系统相关的函数是能够“显式”地把内存分配到“虚拟”内存里面,软件本身也没有权限直接指示操作系统什么时候进行内存页交换。普通软件能做的,只是能够告诉操作系统“我现在需要xx大小内存”,和“这部分内存我不需要了,你随意处理”。另外请思考一个问题,原本2G内存,虚拟内存3G的情况下,系统能正常运行,为什么物理内存8G,虚拟内存0G就不能正常运行呢?很多人说是因为负荷小,才没出问题,但是需要注意的是,负荷足够大的情况下,2G内存+3G虚拟内存,一样会发生不稳定和造成系统崩溃的情况,因为即使交由托管虚拟内存大小,系统也不可能无限制地去把硬盘空间分配为虚拟内存,所以因为内存占用问题而造成的系统稳定性降低,最根本的原因是物理内存size的问题,而不是因为没有打开虚拟内存。最后再强调一个,windows内核中关于内存的管理策略,是针对大多数情况下做出的策略平衡,并不会过于倾斜向特别小的内存或者特别大的内存的情况。如果有超过8G,或者16G甚至更大的内存的情况下,而本身的用户程序并不是太过占用内存,再发生内存页交换,是毫无意义的,反而让本来的空闲内存得不到充分利用。



实际上我发现虚拟内存确实没有必要,我的虚拟内存交于系统自己管理,最开始是7G多,随后变成8G到后来变成10G,这个与网上说的系统会自动把虚拟内存设置与物理内存一致情况。在本人电脑是这种情况还不能说明问题,于是我找了其他同学电脑看了下。他的物理内存8G,查看虚拟内存发现也是8G左右,这正好说明
系统会自动把虚拟内存设置与物理内存一致情况。总之就是物理内存越大,相应的虚拟内存越大,占用硬盘空间越大,其实这么大虚拟内存完全没有必要,鉴于我的物理内存12G,采用折中办法,将虚拟内存设置系统推荐的2417M,最后重启电脑C盘瞬间变大了。之后电脑没察觉任何异常!所以我还是比较赞同大内存可以禁用虚拟内存的说法。

你可能感兴趣的:(win7/win10的物理内存(RAM)12G还需要虚拟内存吗?)