查看: 2606|回复: 10
收起左侧

[求助] 虚拟内存设置

[复制链接]
z477570301 该用户已被删除
发表于 2011-9-20 09:07:49 | 显示全部楼层 |阅读模式
      
      虚拟内存是 Windows 内存管理中的一个概念,每一个 32bit Windows 下的进程都可以访问 4GB 内存地址(理论),通俗地说这个进程可以访问的内存就是虚拟内存,因为它不是实际的物理内存地址。即使是一台只有 64MB 内存的电脑,每一个 32 bit Windows 进程所能访问的内存地址也还是 4GB(理论)。

      每一个进程访问的内存都是从 0x00000000 到 0xffffffff,当然它不可能是实际上主板安装的物理内存的地址,否则进程之间就会相互冲突。操作系统的基本原理就是对电脑的硬件资源进行管理和分配,其中内存管理是最为重要的一环。将每一个进程的虚拟内存地址映射到实际上的物理内存地址中,就是 Windows 内存管理机制的一部分。

      由于大多数电脑的物理内存非常小,因此多个进程,甚至有可能一个进程就需要使用超过物理内存地址范围的内存,所以 Windows 会在磁盘上建立一个页面文件(pagefile.sys)。为什么叫作页面文件呢?因为 x86 处理器对内存的访问是按照一页一页来进行的,你不能访问比一页更小的内存。每一个进程都按照一页一页的原则被 Windows 把它提交的虚拟内存地址映射到物理内存地址中,而且这个映射未必是连续的。Windows 有一个表负责维护这个映射关系,这个表在 CPU 中也有一个 Cache,它叫做 TLB,AMD 曾经有一批 CPU 的 TLB 有问题而导致非常严重的问题,所以不得不禁用这个表,这样 Windows 就不能跑到 CPU 里面查询 TLB 而必须到内存去查表,效率就会下降了。如果当前物理内存不够大,Windows 会把进程优先级别较低或不活动的进程的虚拟内存,按照一页一页从物理内存的对应映射中转储到硬盘上的页面文件,然后在表中注明这部分虚拟内存的地址已经在硬盘的页面文件上了。等到这部分地址再次被访问的时候,Windows 又会把这些数据中页面文件搬回到物理内存中,再一次更改映射表,使得进程可以访问这些数据,这个过程就叫做分页。

      所以要记住,进程是不能用硬盘当内存的,这是一个一直以来错误的说法。Windows 只是把一些不活动的数据转移到硬盘上,等到需要的时候又转移回内存(此时内存中的另外一部分数据可能又会被转移到硬盘上),因为我们使用的冯诺依曼计算机必须在内存中才能访问数据和执行程序。如果物理内存很小而进程需要访问的内存很大,那么分页就会频繁发生,如果物理内存非常大,那么分页就可以不用发生。

      所以,虚拟内存就是具体到每一个进程自己访问的内存的地址,而将这些虚拟的地址映射到物理内存,是 Windows 的事情,这个过程中,硬盘上的页面文件可以参与,而产生分页,也可以不参与。每一个进程需要访问多大的虚拟内存,都需要向系统提交这个更改,所有进程提交的虚拟内存更改的总合,就是当前实际上需要的内存大小。只要这个大小不超过物理内存中可以使用的范围,那么可以不用分页。

      也就是说,只要你知道你所执行的程序以及它们需要的内存的总合小于你的主板上安装的内存中可以使用的范围,那么禁用硬盘上的页面文件,是可以的。至于虚拟内存,它是一个机制,是 Windows 内存管理的基础,能被禁止才怪了。理论上如此,但具体到一些程序,一些早期程序的开发者过于短视或者认为程序的生命周期内不会出现电脑上可以安装巨大内存的情况,而必须检查你是否启用了页面文件,否则不予执行。这部分程序是极少的,而且都是很古老的程序,现在的程序一般都没有这个问题。比如早期 Photoshop 可能会检查,但 CS4 是可以让你在禁用页面文件情况下执行的,只要你可以使用的物理内存足够大。

      楼主完全不明白冯诺依曼架构电脑,不明白 Intel 8086 内关管理和 80386 保护模式,80486 虚拟内存表,Windows 虚拟内存机制,说出来的话乱七八糟。

微软官方给出的解释

      如何设置Windows 7的虚拟内存?

  答:虚拟内存只是真实内存不足的补充,所以不要加以神化,虚拟内存的读写性能(即硬盘的读写)只有真正内存性能的几十分之一,而且对硬盘损伤很大!能不用则不用,能少用则少用!原则是够用+留少量余量即可。

  误区一:虚拟内存不应该设在系统盘C盘(系统盘),而应该设在其他非系统分区。

  答案:错!因为C盘做为默认的系统盘,硬盘读写最频繁的就是系统文件和页面文件。而硬盘读写时最耗时的操作是什么呢?是磁头定位!而同一分区内的磁头定位无疑要比跨分区的远距离来回定位要节省时间!所以,系统盘内的虚拟内存(系统默认值)是执行最快、效率最高的。

  误区二:虚拟内存的最佳值是内存容量的1.5-3倍。

  答案:错!要根据实际使用情况来判断。特别是大内存普及的今天。内存使用率看任务管理器的内存一栏。一般1GB内存,根据实际使用内存占用情况,可以设虚拟内存为128-1024MB(内存+虚拟内存之和一般比正常占用高256-512MB即可)。平时正常占用为几百MB的人,甚至可以禁用虚拟内存(有软件限制的可以设少量虚拟内存,如16-128MB)。

  内存为2G及以上的,一般可以禁用虚拟内存(有软件限制的可以设少量虚拟内存,如16-128MB)。部分确实会使用大量内存的人,如玩大型3D游戏、制作大幅图片、3D建模等,并收到系统内存不足警告的,才需要酌情设定虚拟内存。

  误区三:虚拟内存越大越好。

  答案:错!虚拟内存过大,既浪费了磁盘空间,又增加了磁头定位的时间,降低了系统执行效率,没有任何好处。正确设置可节省256MB-4G左右空间(视内存大小)

      
bluelaser
发表于 2011-9-20 10:51:21 | 显示全部楼层
这么说我内存12GB应该禁用虚拟内存?
z477570301 该用户已被删除
 楼主| 发表于 2011-9-20 11:05:15 | 显示全部楼层
bluelaser 发表于 2011-9-20 10:51
这么说我内存12GB应该禁用虚拟内存?

虚拟内存本来就是内存不够时才用到,你的内存那么大都用了吧。
我的才纠结只1G,设置为1.5,我这只是转帖,各种说法不知那种更合理。
i5151
发表于 2011-9-20 15:58:13 | 显示全部楼层
xp的时候,还设置过,win7了完全系统默认。
天原
发表于 2011-9-20 16:07:46 | 显示全部楼层
那些国内优化软件都建议将虚拟内存设置到非系统分区额…
z477570301 该用户已被删除
 楼主| 发表于 2011-9-20 17:03:56 | 显示全部楼层
天原 发表于 2011-9-20 16:07
那些国内优化软件都建议将虚拟内存设置到非系统分区额…

所以不知道设置在哪设置多少好,听听你们的意见,反正我系统盘没空间给设置
sadfish5
发表于 2011-9-20 18:36:43 | 显示全部楼层
天原 发表于 2011-9-20 16:07
那些国内优化软件都建议将虚拟内存设置到非系统分区额…

我的是自己设置的虚拟内存,默认存放在了C盘下,文件非常大。
难道可以手动移动走?0 0~
天原
发表于 2011-9-20 18:51:00 | 显示全部楼层
sadfish5 发表于 2011-9-20 18:36
我的是自己设置的虚拟内存,默认存放在了C盘下,文件非常大。
难道可以手动移动走?0 0~

把系统分区设置为零,其他区设置为非零就可

评分

参与人数 1经验 +5 收起 理由
sadfish5 + 5 版区有你更精彩: )

查看全部评分

曜辉
发表于 2011-9-20 19:42:53 | 显示全部楼层
关于虚拟内存很多说法的,我都迷糊!
hilan
发表于 2011-9-20 19:53:59 | 显示全部楼层
不管它,由系统自动设置
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-5-23 04:58 , Processed in 0.146054 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表