内存映射文件可以有多大?

2024-03-22

什么限制了内存映射文件的大小?我知道它不能大于未分配地址空间的最大连续块,并且应该有足够的可用磁盘空间。但还有其他限制吗?


You're being too conservative: A memory-mapped file can be larger than the address space. The view of the memory-mapped file is limited by OS memory constraints, but that's only the part of the file you're looking at at one time. (And I guess technically you could map multiple views of discontinuous parts of the file at once, so aside from overhead and page length constraints, it's only the total # of bytes you're looking at that poses a limit. You could look at bytes [0 to 1024] and bytes [240 to 240 + 1024] with two separate views.)

在 MS Windows 中,查看文件映射视图 http://msdn.microsoft.com/en-us/library/aa366761(VS.85).aspx功能。它实际上采用 64 位文件偏移量和 32 位长度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内存映射文件可以有多大? 的相关文章

  • 默认情况下,Windows 内存映射文件内容是否始终归零?

    我凭经验确定 在我的系统上 创建为特定大小的内存映射文件在默认情况下总是完全清零 例如 使用调用 HANDLE hMM CreateFileMapping h NULL PAGE READWRITE 0 0x01400000 20MB NU
  • mmap 之后在 memcpy 中获取分段错误 SIGSEGV

    我编写了一个简单的 Android 本机函数 它获取文件名和更多参数 并通过映射 mmap 内存来读取文件 因为它是 mmap 所以我实际上不需要调用 read 所以我只需从 mmap 返回的地址中调用 memcpy 即可 但是 在某个地方
  • Haskell 使用惰性 mmap 读取最后一行

    我想读取文件的最后一行 并确保它的字段数与第一行相同 我不关心中间的任何内容 我使用 mmap 是因为它对大文件的随机访问速度很快 但遇到了不理解 Haskell 或懒惰的问题 gt import qualified Data ByteSt
  • 为什么 Python 的 mmap 不能处理大文件?

    编辑 此问题仅适用于 32 位系统 如果您的计算机 操作系统和 python 实现都是 64 位的 那么 mmap ing 大文件可以可靠地工作并且非常高效 我正在编写一个模块 除其他外 它允许对文件进行按位读取访问 这些文件可能很大 数百
  • mmap 是否与所有进程共享内存?

    当我这样做时 myProgram h myProgram c struct PipeShm all my fields more struct PipeShm myPipe initialization for all fields str
  • 随机访问 C++ 和 Python 时 Linux 内存映射文件性能不佳

    在尝试使用内存映射文件创建多 GB 文件 大约 13 GB 时 我遇到了 mmap 的问题 最初的实现是在 Windows 上使用 boost iostreams mapped file sink 在 c 中完成的 一切顺利 然后代码在 L
  • 内存映射文件长度

    我正在处理内存映射文件 有没有办法知道内存映射文件内容的长度 我想要的是附加现有的内存映射文件 在文件中附加字节很容易 但我希望附加字符串 我们可以检查 CAPACITY 属性 但它返回我认为的字节大小 为了更清楚地说明 我正在解释这个场景
  • 内存映射文件偏移低

    我正在用 C 和 Visual Studio 编写 Windows 程序 我必须映射一个文件而不是从它的第 750 个字节访问它 我试过 pFile char MapViewOfFile hMMap FILE MAP ALL ACCESS
  • 如何禁用 mmap() 的写入时复制和按需填充零

    我正在使用 mmap 实现 cp 文件复制 命令 为此 我在 MAP PRIVATE 因为我只想读取 模式下映射源文件 在 MAP SHARED 模式下映射目标文件 因为我必须写回目标文件的更改内容 在执行此操作时 我观察到由于两个原因而发
  • 使用内存映射文件的缺点

    我的网络服务每分钟写入数千笔交易 我们将它们保存在硬盘上 我正在测试保存这些文件的不同方法 并使用标准 IO 和 MemoryMapped 文件进行了一些测试 在我的结果中 使用 MemoryMapped 文件写入文件 20 k 文本文件
  • mmap 与 O_DIRECT 进行随机读取(涉及哪些缓冲区?)

    我正在实现一个基于磁盘的哈希表 支持大量键 26 百万 该值被反序列化 整个文件的读取本质上是随机的 值小于页面大小 并且我正在针对 SSD 进行优化 安全性 一致性并不是那么大的问题 性能很重要 我当前的解决方案涉及使用mmap 文件与M
  • 使用 mmap 共享结构数组

    我正在尝试创建一个在父进程和子进程之间共享的结构数组 我在尝试访问数组数据时遇到分段错误 我确信这个问题与我使用指针的方式有关 因为这是我不太熟悉的领域 请注意 我删除了大部分看起来不相关的代码 structure of Registrat
  • Linux 共享内存:shmget() 与 mmap()?

    In this https stackoverflow com questions 5656530 how to use shared memory with linux in c建议OP使用线程mmap 代替shmget 在 Linux
  • Linux 将虚拟内存范围映射到现有虚拟内存范围?

    在Linux中 有没有一种方法 在用户空间中 将虚拟地址范围映射到支持现有虚拟地址范围的物理页面 mmap 函数只允许映射文件或 新 物理页 我需要能够做这样的事情 int addr1 malloc SIZE int addr2 0x600
  • 如何将 regexec 与内存映射文件一起使用?

    我正在尝试在大内存映射文件中查找正则表达式 通过使用正则执行 功能 我发现当文件大小变大时程序崩溃 是页面大小的倍数 有没有正则执行 具有字符串长度的函数 作为附加参数 Or 如何在内存映射文件中查找正则表达式 这是总是崩溃的最小示例 如果
  • 通过 mmap 文件进行 IPC:应该使用原子和/或易失性吗?

    我使用 mmap 文件在进程之间共享数据 代码是这样的 struct Shared int Data int file open file dat O RDWR Shared shared static cast
  • Linux进程间共享内存

    我有使用多个进程的服务器 fork 有大量数据可以由一个进程创建 并且应该在其他进程之间共享 因此 我使用 shm open mmap 创建共享内存并将其映射到虚拟内存 struct SharedData const char name i
  • 将文件中的非连续块映射到连续内存地址

    我对使用内存映射IO的前景感兴趣 最好是 利用 boost interprocess 中的设施实现跨平台 支持 将文件中的非连续系统页面大小块映射到 内存中连续的地址空间 一个简化的具体场景 我有许多 普通旧数据 结构 每个结构都有固定长度
  • 在 Mac 上设置 Laravel php artisan 迁移错误:没有这样的文件或目录 [重复]

    这个问题在这里已经有答案了 将一个完美运行的 laravel 项目从 git 拉到运行 MAMP 的 mac 上 项目在linux机器上完美运行 作曲家安装 php artisan migrate 出现以下错误 PDOException S
  • 为什么 mmap 在 iOS 上失败?

    我正在尝试使用 mmap 在 iOS 上读取和播放音频文件 它适用于最大约 400MB 的文件 但当我尝试 500MB 文件时 出现 ENOMEM 错误 char path NSBundle mainBundle pathForResour

随机推荐