国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Net 應用程序如何在32位操作系統(tǒng)下申請超過2G的內存

2019-11-17 03:51:48
字體:
來源:轉載
供稿:網(wǎng)友
2008 年我寫過一篇博客叫 《讓.Net 應用程序突破2G的內存訪問限制》這篇博客主要講述了如何在32位操作系統(tǒng)下利用AWE 擴展訪問超過2G的內存。AWE方式雖然可以訪問超過2G的內存,但其本身也有一些問題,首先必須要鎖定內存,其次需要自己寫內存管理程序來管理這些內存,.net framework 無法在AWE 擴展的內存中創(chuàng)建托管堆。其實很多應用只是想申請比2G稍多一些的內存,最簡單的方法還是采用/3GB開關來實現(xiàn)。本文將講述如何利用 /3GB開關來讓32位操作系統(tǒng)下.net 應用程序申請超過2GB的內存。



首先簡單說一下這個 /3GB 開關 (知道的可以不看)

默認情況下,Windows 可以對總計 4 千兆字節(jié) (GB) 的虛擬地址空間進行尋址。默認情況下,此地址空間中的 2 GB 為內核(操作系統(tǒng))保留,另外 2 GB 是為用戶模式程序保留的。當你將 /3GB 開關放入操作系統(tǒng)的 Boot.ini 文件中時,你就重新分配了虛擬地址空間,給用戶模式程序提供 3 GB 的空間,同時將內核限制為 1 GB。

設置辦法:C:/boot.ini 文件做如下修改:

[boot loader]timeout=30default=multi(0)disk(0)rdisk(0)partition(2)/WINNT[Operating systems]multi(0)disk(0)rdisk(0)partition(2)/WINNT="????" /3GB
如下操作系統(tǒng)可以支持 /3GB 開關

Windows xp PRofessional
Windows Server 2003
Windows Server 2003, Enterprise Edition
Windows Server 2003, Datacenter Edition
Windows 2000 Advanced Server
Windows 2000 Datacenter Server
Windows NT Server 4.0, Enterprise Edition

Windows Vista , Windows 7Windows Server 2008 也支持這個開關



詳見

http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx



設置完后重新啟動系統(tǒng),這時應用程序就可以申請超過3G的內存了。一切好像到這里就該結束了,然而并非如此。

當我運行我在.net framework 下做的測試程序時,我發(fā)現(xiàn)3GB開關打開后,這個測試程序依然無法申請超過2G的內存,內存申請到1.5G以上時就無法再分配內存了。

查找資料后我發(fā)現(xiàn),操作系統(tǒng)在支持/3GB參數(shù)后應用程序也要做相應的修改,告訴操作系統(tǒng)可以按照/3GB方式運行才行,我想這很可能是出于對應用程序兼容性方面的考慮。

為了告知操作系統(tǒng)這個應用程序可以支持/3GB方式,我們需要往exe 文件頭中添加一個 IMAGE_FILE_LARGE_ADDRESS_AWARE 標志。添加的方式很簡單:

在你的系統(tǒng)的 Program Files/Microsoft Visual Studio 8/VC/bin 目錄下找到 editbin 這個可執(zhí)行文件,在命令行下執(zhí)行:

editbin /LARGEADDRESSAWARE yourapplication.exe 這里的yourapplication.exe 需要輸入的是你的.net 應用程序的路徑名加文件名。

執(zhí)行了這條語句后,我再次運行測試程序,內存可以申請到 2.5G了,比2GB模式下多了1G內存可以使用。



最后多羅嗦一句,為什么.net 應用程序在 2GB 情況下只能申請最多 1.4-1.6 GB 的內存?

這是因為.net 的垃圾回收器在工作時需要拷貝 live objects,.net framework 需要為它保留一定空間的內存來完成這些拷貝工作。這也是為什么Microsoft 建議asp.net 應用程序內存分配的上限最好設置為800M的原因.

.net 應用程序如何優(yōu)化性能,參見下面鏈接,大家有興趣可以去看看,這里不再多說了,離主題有點遠了。

Improving .NET Application Performance and Scalability


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大荔县| 阿拉善盟| 宁河县| 斗六市| 司法| 贵溪市| 昭觉县| 深泽县| 新宁县| 彰化市| 安义县| 吉隆县| 邻水| 漳平市| 桑植县| 青川县| 大同市| 抚州市| 克山县| 临邑县| 黄梅县| 万全县| 玉溪市| 尉犁县| 济南市| 天等县| 大兴区| 濮阳市| 靖远县| 鹤庆县| 北京市| 台南市| 承德市| 龙陵县| 开平市| 松阳县| 石嘴山市| 乡城县| 德化县| 仁化县| 张家口市|