32位系统如何在2G和3G间找到平衡点

我们知道32位系统下,用户态程序只能访问2G的内存,特别是.NET程序在这种情况下,内存一旦超过1.2G后,就很容易出OutofMemeryException异常,有一个选择就是为打开3G开关,那么我们的程序理论上就可以找访问到3G的内存,但是由于32系统寻址的限制,最多4G内存地址,如果打开3G开关,那么留给操作系统内核的的寻址空间之只有1G了。这其实是比较危险的,比较容易出一下莫名其妙的错误。那么怎么在这之间寻找一个平衡点呢。

修改boot.INI如如下内容:

[Boot Loader]
Timeout=30
Default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows Server 2003" /fastdetect /3GB /Userva=2900

特别需要注意的
The /userva=xxxx switch is designed to allow for more precise tuning of User-mode address space for program manufacturers who require more than 2 GB of User-mode space but do not require all the space that is provided by the /3GB tuning switch alone.

这样一来,用户态程序就只会使用2900M,通过 userva开关来寻求一个平衡点。
当然遇到这种问题最好的解决方案采用64位操作系统。

参考:http://support.microsoft.com/kb/316739/en-us

转载于:https://www.cnblogs.com/jingzy/archive/2009/08/14/1545838.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值