Debugging Tools for Windows

用于操作内存的引导参数

可以不改变机器的物理内存总数就模拟低内存环境。可以在Windows Server 2003和Windows XP上使用/burnmemory /maxmem引导参数,在Windows Vista上使用BCDedit /set命令和truncatememoryremovememory 选项来限制操作系统可使用的内存。

/burnmemory 在Windows Server 2003和Windows XP上有效,可以将Windows能使用的内存控制在指定值。 它以MB为单位。可以将它的值设置为小于系统中实际物理内存的任意值。

/maxmem 指定Windows可以使用的内存最大值。以MB为单位。可以将它的值设置为小于系统中实际物理内存的任意值。

/maxmem 参数实际是指定Windows 能使用的最大内存地址。由于在映射物理内存时有缝隙,Windows能使用的内存可能小于/maxmem 的值。如果要精确设置,使用/burnmemory

truncatememoryremovememory 在Windows Vista中有效。truncatememory 选项忽略指定的物理地址和它之上的所有内存。removememory 选项将Windows可以使用的内存减少指定值(以MB为单位)。两个选项都可以减少内存,但是removememory 在算上内存空隙的时候限制系统使用的内存更好。

在Windows Vista之前的操作系统中用于在低内存环境进行测试的引导参数

要在Windows Server 2003和Windows XP上模拟低内存环境,需要在引导入口添加/burnmemory 参数。将它的值设置为系统总物理内存数减去测试期望使用的内存大小。

例如,要将一台1GB物理内存的及其限制为最多使用128MB内存,将/burnmemory 参数设置为896((1 GB (1024 MB) - 128 MB = 896 MB)。

下面的示例Boot.ini文件的第一个引导入口具有/burnmemory 参数。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Low Memory" /fastdetect /burnmemory=896
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect

使用Bootcfg 为引导入口添加/burnmemory 参数。由于Bootcfg没有为/burnmemory 设置的开关,所以需要使用Bootcfg /raw 开关,它允许为引导入口指定任何参数。

下面的Bootcfg命令中,/raw 开关在引导入口中添加"/burnmemory=896"这段字符串内容。/A 开关指定Bootcfg直接在入口中添加字符串,但是不替换入口中已有的任何引导参数。/ID 开关指定引导入口号。

bootcfg /raw "/burnmemory=896" /A /ID 1

下面的Bootcfg输出显示了Boot.ini文件的系统中的命令运行结果。

Boot Entries
------------
Boot entry ID:   1
Friendly Name:   "Microsoft Windows XP Professional"
Path:            multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /fastdetect /burnmemory=896

Windows Vista中进行低内存环境测试的引导参数

要在Windows Vista中模拟低内存环境,用BCDedit /set命令和removememory 选项来修改引导入口。将removememory 的值设置为系统总物理内存数减去测试期望使用的内存大小。

例如,要将一台2GB物理内存的机器的内存限制为512MB,将removememory 的值设置为1536 (1 GB (2048 MB) - 512 MB = 1536 MB)。

下面的BCDEdit命令将指定引导入口的系统可用内存减少1536MB。

bcdedit /set {18b123cd-2bf6-11db-bfae-00e018e2b8db} removememory 1536

也可以使用bcdedit /set 命令和truncatememory 参数达到同样目的。使用该选项时,Windows忽略掉指定地址和它之上的所有物理地址。address以字节为单位。例如,下面的命令将指定的引导入口的物理地址限制在1GB以内。可以用10进制(1073741824)或者16进制(0x40000000)来指定地址。

bcdedit /set {18b123cd-2bf6-11db-bfae-00e018e2b8db} truncatememory Ox40000000

由于removememory 选项是的系统内存使用更加有效率,所以建议用它代替truncatememory

Windows Vista之前的系统中进行低内存环境测试的引导参数

要在Windows 2000中模拟低内存环境,需要在引导入口添加/maxmem 参数。将它的值设置为期望的内存值。

下面的示例Boot.ini文件的第一个引导入口包含/maxmem 参数。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Low Memory" /fastdetect /maxmem=128
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect

下例中,/maxmem 参数将Windows可用内存限制到128MB, 并且配置为使用调试电缆(null modem)调试。将使用两个Bootcfg命令。

第一条Bootcfg命令使用Bootcfg /addsw (add switch)开关和/MM 参数、值128,在引导入口中添加/maxmem 参数,并设置值为128(MB)。/ID指定引导入口号。

bootcfg /addsw /MM 128 /ID 1

第二条Bootcfg命令使用Bootcfg /debug 开关和值ON为引导入口添加/debug参数。使用/port 开关和值COM1添加/debugport 参数并设置为COM1,使用/baud 开关合值19200添加/baudrate参数并设置为19200 bps。/ID参数指定引导入口号。

bootcfg /debug ON /port COM1 /baud 19200 /ID 1

下面的Bootcfg输出显示了引导入口的结果。新添加的参数在下面用粗体显示。

Boot Entries
------------
Boot entry ID:   1
Friendly Name:   "Windows XP 128MB Debug"
Path:            multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /fastdetect /maxmem=128 /debug /debugport=COM1 /baudrate=19200



Build machine: CAPEBUILD