最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 编程开发 > asp教程

如何在32位操作系统下申请超过2G的内存

日期:02-17    来源:中国设计秀    作者:cnwebshow.com

2008 年我写过一篇博客叫 《让.Net 应用程序突破2G的内存访问限制》这篇博客主要讲述了如何在32位操作系统下利用AWE 扩展访问超过2G的内存。AWE方式虽然可以访问超过2G的内存,但其本身也有一些问题,首先必须要锁定内存,其次需要自己写内存管理程序来管理这些内存,.net framework 无法在AWE 扩展的内存中创建托管堆。其实很多应用只是想申请比2G稍多一些的内存,最简单的方法还是采用/3GB开关来实现。本文将讲述如何利用 /3GB开关来让32位操作系统下.net 应用程序申请超过2GB的内存。3kA中国设计秀
3kA中国设计秀
3kA中国设计秀
3kA中国设计秀
首先简单说一下这个 /3GB 开关 (知道的可以不看)3kA中国设计秀
3kA中国设计秀
默认情况下,Windows 可以对总计 4 千兆字节 (GB) 的虚拟地址空间进行寻址。默认情况下,此地址空间中的 2 GB 为内核(操作系统)保留,另外 2 GB 是为用户模式程序保留的。当你将 /3GB 开关放入操作系统的 Boot.ini 文件中时,你就重新分配了虚拟地址空间,给用户模式程序提供 3 GB 的空间,同时将内核限制为 1 GB。 3kA中国设计秀
3kA中国设计秀
设置办法:C:boot.ini 文件做如下修改:3kA中国设计秀
3kA中国设计秀
[boot loader]timeout=30default=multi(0)disk(0)rdisk(0)partition(2)WINNT[Operating systems]multi(0)disk(0)rdisk(0)partition(2)WINNT="????" /3GB3kA中国设计秀
如下操作系统可以支持 /3GB 开关3kA中国设计秀
3kA中国设计秀
Windows xp PRofessional3kA中国设计秀
Windows Server 20033kA中国设计秀
Windows Server 2003, Enterprise Edition3kA中国设计秀
Windows Server 2003, Datacenter Edition3kA中国设计秀
Windows 2000 Advanced Server3kA中国设计秀
Windows 2000 Datacenter Server3kA中国设计秀
Windows NT Server 4.0, Enterprise Edition 3kA中国设计秀
3kA中国设计秀
Windows Vista , Windows 7 和 Windows Server 2008 也支持这个开关3kA中国设计秀
3kA中国设计秀
3kA中国设计秀
3kA中国设计秀
详见3kA中国设计秀
3kA中国设计秀
http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx3kA中国设计秀
3kA中国设计秀
3kA中国设计秀
3kA中国设计秀
设置完后重新启动系统,这时应用程序就可以申请超过3G的内存了。一切好像到这里就该结束了,然而并非如此。3kA中国设计秀
3kA中国设计秀
当我运行我在.net framework 下做的测试程序时,我发现3GB开关打开后,这个测试程序依然无法申请超过2G的内存,内存申请到1.5G以上时就无法再分配内存了。3kA中国设计秀
3kA中国设计秀
查找资料后我发现,操作系统在支持/3GB参数后应用程序也要做相应的修改,告诉操作系统可以按照/3GB方式运行才行,我想这很可能是出于对应用程序兼容性方面的考虑。3kA中国设计秀
3kA中国设计秀
为了告知操作系统这个应用程序可以支持/3GB方式,我们需要往exe 文件头中添加一个 IMAGE_FILE_LARGE_ADDRESS_AWARE 标志。添加的方式很简单:3kA中国设计秀
3kA中国设计秀
在你的系统的 Program FilesMicrosoft Visual Studio 8VCbin 目录下找到 editbin 这个可执行文件,在命令行下执行:3kA中国设计秀
3kA中国设计秀
editbin /LARGEADDRESSAWARE yourapplication.exe 这里的yourapplication.exe 需要输入的是你的.net 应用程序的路径名加文件名。3kA中国设计秀
3kA中国设计秀
执行了这条语句后,我再次运行测试程序,内存可以申请到 2.5G了,比2GB模式下多了1G内存可以使用。3kA中国设计秀
3kA中国设计秀
3kA中国设计秀
3kA中国设计秀
最后多罗嗦一句,为什么.net 应用程序在 2GB 情况下只能申请最多 1.4-1.6 GB 的内存?3kA中国设计秀
3kA中国设计秀
这是因为.net 的垃圾回收器在工作时需要拷贝 live objects,.net framework 需要为它保留一定空间的内存来完成这些拷贝工作。这也是为什么Microsoft 建议asp.net 应用程序内存分配的上限最好设置为800M的原因. 3kA中国设计秀
3kA中国设计秀
.net 应用程序如何优化性能,参见下面链接,大家有兴趣可以去看看,这里不再多说了,离主题有点远了。3kA中国设计秀
3kA中国设计秀
Improving .NET Application Performance and Scalability3kA中国设计秀
3kA中国设计秀
 3kA中国设计秀

本文引用地址:/bc/article_46116.html
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明