當前位置:首頁 > IT技術

內存映像文件

時間:2019-10-18 23:12:10來源:IT技術作者:seo實驗室小編閱讀:74次「手機版」
 

映像文件

象使用虛擬內存一樣,使用內存映像文件同樣需要經過保留和提交兩個過程,首先在進

程內存空間保留一塊區域,然后提交物理存儲給這段區域。不同的是物理存儲來自于磁

盤上的文件,而不是系統的分頁文件。也即將磁盤上指定的數據文件作為虛擬內存,這

個實現過程被稱為文件映像,可以將文件全部或部分映像到進程的地址空間中。文件映

像過以后,可以把文件映像的部分當作已全部被載入內存一樣的去訪問它,這時又稱它

為內存映像文件。

內存映像文件使用步驟

要使用內存映像文件,可以按以下步驟:

(1) 調用windows API 函數CreateFile()創建或是打開一個文件,得到一個標識該文

件(內核對象)的句柄,它確定了哪一個磁盤文件將要作為內存映像文件。

(2) 將(1)中得到的文件對象句柄作為第一個參數調用Windows API 函數CreateFileM

APPing()創建一個文件映像對象。通知系統該文件的大小及對該文件的訪問方式,同

時也得到一個標識該文件映像對象的句柄。

(3) 將(2)中得到的文件映像對象句柄作為第一個參數調用Windows API 函數MapView

OfFile()通知系統映像文件全部或部分內容到進程的某一段地址空間,并將此段空間

首地址通過該函數返回。這一步也就是使用虛擬內存的保留和提交過程,此后就可以利

用此首地址實現對文件內容的讀寫了。

也可以不做第一步,直接從第二步開始,但這時要用INvalid_handle_VALUE為參數作為

標識文件對象的句柄,這時系統以其分頁文件作為內存映像文件而不用指定磁盤上的哪

一個磁盤文件。當你使用完內存映像文件后,需要做以下幾步清除動作。

(1) 調用Windows API 函數UnmapViewOfFile(),通知系統釋放文件映像對象在進程地

址空間中占用的區域。

(2) 調用Windows API 函數CloseHandle(),分別關閉文件映像對象和文件對象。

相關閱讀

直接內存溢出

JVM虛擬機是運行在操作系統上的進程,操作系統分配給JVM的內存在啟動是有限的,不可能把全部內存都分配給JVM,Java NIO又用到了直接內

解決應用程序錯誤,內存不能為“read”或“written”

內存不能為“read”或“written”的解決方案?有些人運行飚車程序的時候會彈出該內存不能為“read”的錯誤提示。希望以下文章能

告別win10圖片查看器內存占用過高,使用windows原來的

win10 的問題, 現在默認的照片查看方式是照片應用, 但是一個app 你這是要逆天呀,占用這么多??還好我的是16g 但是我的16g 也剛不

Windows10設置動態視頻桌面(占少量內存)

制作動態視頻桌面需要用到兩個工具: FastStone Capture : 國外官網? 國內非官方下載 FastStone Capture : 激活碼參考文章 desks

三星回應中國調查,曾被指操控內存價格

A5創業網(公眾號:iadmin5)6月4日消息,中國反壟斷機構于5月31日派出了多個工作小組,分別對三星、海力士、美光三家公司位于北京、上海、

分享到:

欄目導航

推薦閱讀

熱門閱讀

云南彩票投注站申请