讓.Net 應(yīng)用程序突破2G的內(nèi)存訪問(wèn)限制(4)_.Net教程
推薦:解讀.NET 2.0中Hashtable快速查找的方法一般來(lái)說(shuō)我們都是用 Hashtable 的 ContainsKey 方法來(lái)查找 Hashtable 中是否存在某個(gè)鍵值然后讀取他,但是這個(gè)方法并不是效率最好的方法。比較好的方法是直接讀取鍵值然后判斷這個(gè)對(duì)象是否
首先先通過(guò)VirtualAlloc函數(shù)申請(qǐng)一塊32位虛擬內(nèi)存區(qū)域
然后通過(guò) MapUserPhysicalPages API 函數(shù)將AWE內(nèi)存映射到這個(gè)虛擬內(nèi)存地址區(qū)域。
以下為引用的內(nèi)容:
public void Map(bool readOnly)
{
unsafe
{
if (IsMapped)
{
return;
}
if (readOnly)
{
_VirtualAddress = AweApi.VirtualAlloc(null, Capacity, AweApi.MEM_RESERVE | AweApi.MEM_PHYSICAL,
AweApi.PAGE_READONLY);
}
else
{
_VirtualAddress = AweApi.VirtualAlloc(null, Capacity, AweApi.MEM_RESERVE | AweApi.MEM_PHYSICAL,
AweApi.PAGE_READWRITE);
}
if (_VirtualAddress == null)
{
throw new AweStreamException("Cannot reserve memory.", AweStreamException.Reason.CannotReserveMemory);
}
if (!AweApi.MapUserPhysicalPages(_VirtualAddress, _NumberOfPages, _PFNArray))
{
AweApi.VirtualFree(_VirtualAddress, Capacity, AweApi.MEM_RELEASE);
_VirtualAddress = null;
throw new AweStreamException(string.Format("MapUserPhysicalPages failed ({0})", General.GetLastError()),
AweStreamException.Reason.MapUserPhysicalPagesFail);
}
_CanWrite = !readOnly;
}
}
去映射和歸還AWE內(nèi)存的過(guò)程是上面兩個(gè)過(guò)程的逆過(guò)程,這里就不再多講,有興趣可以看我的代碼。
下面是實(shí)例代碼下載位置
源代碼地址
分享:解讀26個(gè)ASP.Net開(kāi)發(fā)新手的常見(jiàn)問(wèn)題一位ASP.net初學(xué)者學(xué)習(xí)過(guò)程中整理的備忘錄,包括“打開(kāi)新的窗口并傳送參數(shù),為按鈕添加對(duì)話框,刪除表格選定記錄,刪除表格記錄警告”等等常見(jiàn)問(wèn)題的解決方法。 1. 打開(kāi)新的窗
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- .net 框架程序的設(shè)計(jì)
- 讓ASP.NET程序自動(dòng)為URL加上超級(jí)鏈接
- 用XML JSP實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容動(dòng)態(tài)顯示的方案
- C#中遍歷各類數(shù)據(jù)集合的方法總結(jié)
- 談?wù)凥tmlControl與WebControl的區(qū)別與用途
- ASP.NET學(xué)習(xí)篇(4)——服務(wù)器端的控件
- 關(guān)于DDD:管理工作單元實(shí)例的兩種模式的使用方法
- 基于自定義Unity生存期模型PerCallContextLifeTimeManager的問(wèn)題
- FCKeditor 2.6在ASP.NET中的配置方法
- 專家詳解:復(fù)雜表達(dá)式的執(zhí)行步驟
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-讓.Net 應(yīng)用程序突破2G的內(nèi)存訪問(wèn)限制(4)
。