映像文件
象使用虚拟内存一样,使用内存映像文件同样需要经过保留和提交两个过程,首先在进
程内存空间保留一块区域,然后提交物理存储给这段区域。不同的是物理存储来自于磁
盘上的文件,而不是系统的分页文件。也即将磁盘上指定的数据文件作为虚拟内存,这
个实现过程被称为文件映像,可以将文件全部或部分映像到进程的地址空间中。文件映
像过以后,可以把文件映像的部分当作已全部被载入内存一样的去访问它,这时又称它
为内存映像文件。
内存映像文件使用步骤
要使用内存映像文件,可以按以下步骤:
(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 也刚不
制作动态视频桌面需要用到两个工具: FastStone Capture : 国外官网 国内非官方下载 FastStone Capture : 激活码参考文章 desks
A5创业网(公众号:iadmin5)6月4日消息,中国反垄断机构于5月31日派出了多个工作小组,分别对三星、海力士、美光三家公司位于北京、上海、