什么是内存映射文件和实际的内存使用情况?

什么是内存映射文件和实际的内存使用情况?,第1张

概述什么是内存映射文件和实际的内存使用情况

不能真正find这方面的任何细节,所有我知道的关于mmf在windows中:

在windows中创build内存映射文件不会增加程序使用的内存量

为该文件创build一个视图会消耗相当于视图大小的内存

对我来说,这看起来相当倒退,因为我知道mmf本身实际上有内存…在某个地方。 如果我用mmf写东西并销毁视图,数据仍然存在。 同时,为什么这个观点要记忆呢? 它只是一个指针,不是吗?

然后就是在公羊里面的什么东西和磁盘上的什么东西的奇怪。 在大型mmf的分布式访问模式,有时速度在那里,有时不是。 我猜它的一些有时存储在文件中,如果有一个绑定到它或分页文件,但真的,我不知道。

无论如何,驱使我调查这个问题是我有一个〜2GB的文件,我想多个程序共享。 我不能在每个视图中创build一个2GB视图,因为我只是“内存不足”,所以我必须创build/销毁较小的视图。 由于额外的偏移量计算以及视图本身的创build,这会产生大量的开销。 有人可以向我解释为什么这样吗?

内存映射文件可选写入可能吗?

截断内存映射文件

MapVIEwOffile在32位和64位进程之间共享

处理离开ProcessMapfile可用于进程B.

内存映射文件的性能特点

为什么C中的全局数组(初始化)不能完全算作PSS

用于读取input文件的内存映射文件有多安全?

使用mmap增加文件的大小

用内存映射文件实现虚拟内存

在写入内存映射文件之后什么时候更新?

在像windows这样需求分页的虚拟内存 *** 作系统中,MMF的视图占用地址空间 。 只是数字到处理器,每4096字节一个。 您只有在实际使用视图之前才开始使用RAM。 读取或写入数据。 在此时触发页面错误并强制 *** 作系统将虚拟内存页面映射到物理内存。 “需求分页”部分。

你不能在32位的进程中获得一块2GB的地址空间,因为没有其他空间。 这个限制是代码和数据的其他分配之间的地址空间中最大的缺陷,通常在〜650兆字节左右徘徊。 您需要定位到x64。 或者构建一个与/ LARGEADDRESSAWARE链接的x86程序,并在64位 *** 作系统上运行。 后门这些日子变得毫无意义。

内存映射文件中的东西是它可以让你在没有I / O调用的情况下 *** 作它的数据。 由于这种行为,当你访问文件的时候,windows会把它加载到物理内存中,所以可以在其中而不是在磁盘上进行 *** 作。 你可以在这里阅读更多关于这个: http : //blogs.msdn.com/b/khen1234/archive/2006/01/30/519483.aspx

无论如何,驱使我调查这个问题是我有一个〜2GB的文件,我想多个程序共享。 我不能在每个视图中创建一个2GB视图,因为我只是“内存不足”,所以我必须创建/销毁较小的视图。

最可能的原因是程序是32位的。 32位程序(默认情况下)只有2GB的地址空间,因此无法在单个视图中映射2GB文件。 如果以64位模式重建它们,问题应该消失。

总结

以上是内存溢出为你收集整理的什么是内存映射文件和实际的内存使用情况?全部内容,希望文章能够帮你解决什么是内存映射文件和实际的内存使用情况?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1278879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存