朋友整了个新本,他是游戏发烧友,嫌2G内存太少,加了个4G的条。安上去后,发现并没有达到预想的6G。求助于我,遂做了一番研究。在Windows里,启动处理器时,会分配一个虚拟地址空间Virtual Address Space (VAS)。VAS的大小是由处理器的架构决定的(32位还是64位)。32位的CPU最多仅能支持4G,64位则比较猛,Windows支持多大8TB。

Windows里还有个/3GB switch 的设置,假如,你原来有4G内存,2G留给操作系统,另外2G给应用程序用。通过switch 可以OS少一点点,App多一点点,跑得流畅一点点,\(^o^)/~。

http://msdn.microsoft.com/en-us/library/ff556232.aspx

找回消失的内存_休闲

在Windows Vista? or Windows 7中启用 3GB switch

启用:

  1. 以Administrator登录。
  2. 打开命令提示符, 输入 "bcdedit /set IncreaseUserVa 3072"
  3. 重启。

禁用:

  1. 以Administrator登录。
  2. 打开命令提示符, 输入"bcdedit /deletevalue IncreaseUserVa"
  3. 重启。

3GB switch解决不了问题啊,现在有多的内存用不了。有没有办法扩展扩展,突破4G的限制呢。那就用PAE(PAE Physical Address Extensions)吧,从32 位扩展到 36,最高可以支持到64GB。百科里有具体说明:

http://baike.baidu.com/view/151009.html

然而/PAE 仅仅是既然称作“物理”地址扩展,扩展的是物理地址,实际可用多少跟你的操作系统还有很大关系。比如32位的XP最多也就支持3G点多一点的内存。有一部分内存被下面这些东东吞噬掉了:

- System BIOS (including motherboard, add-on cards, etc..)
- Motherboards resources
- Memory mapped I/O
- Configuration for AGP/PCI-Ex/PCI
- Other memory allocations for PCI devices

CPU-Z工具查看一把。

找回消失的内存_休闲_02

物理内存是4GB。

找回消失的内存_职场_03

做了PAE后,达不到4G。真是不甘心,无端拿走了我0.79G的内存。无奈是公司电脑,想要换个64位操作系统还不容易。

找回消失的内存_Windows_04

继续深入一点,通过PAE虽然可以使用超过4GB 的物理内存,但是对VAS的大小其实没有影响。因而还是只有4GB的虚拟地址空间。于是微软又怎出个Addressing Windows Extensions (AWE),SQL Server就有用到。

找回消失的内存_休闲_05

具体可以参考:

Optimize SQL Server 2000, 2005 or 2008 in Large RAM System by Locking Pages in Memory and AWE:

http://www.mydigitallife.info/2008/06/07/optimize-sql-server-2000-2005-or-2008-in-large-ram-system-by-locking-pages-in-memory-and-awe/

如何配置 SQL Server 以便使用 2 GB 以上的物理内存:http://support.microsoft.com/kb/274750

64位就不用这么麻烦了,没有3GB Swith,也不用考虑PAE。得了,回头说服朋友装Win7 64位吧。