什么限制了存储器映射文件的大小?我知道这不能比的未分配的地址空间中的最大的连续块大,而且应该有足够的可用磁盘空间。但有其他限制?

有帮助吗?

解决方案

您太保守:内存映射文件可以比地址空间较大。在视图中的内存映射文件的由操作系统内存约束的限制,但是这就是你要找的一次文件的唯一部分。 (我猜技术上你可以在一次映射文件的不连续部分的多个视图,所以除了开销,页面长度的限制,它只能是你正在寻找的是总字节#带来了限制。你可以看看字节[0〜1024]和字节[2 40 2 40 + 1024]具有两个单独的视图。)

在MS Windows中,看看 MapViewOfFile 功能。它有效地需要一个64位的文件偏移量和一个32位的长度。

其他提示

应该没有其它限制。难道这些还不够吗? ; - )

在Windows:“文件视图的大小被限制在未保留的虚拟存储器中的最大可用的连续块这是至多2 GB减去已经由过程保留的虚拟内存。”

MDSN

我不知道LINUX / OSX /任何其他人,但它可能也涉及到地址空间。

使用 FUSE 在Linux上,你也可以做一个内存中的文件系统延伸到磁盘上的需求。我不知道有资格作为存储器映射,并区分得到那种模糊。

是,是有限制的内存映射文件。最令人吃惊的是:

  

内存映射文件不能大于2GB在32位的系统。

     

当一个MEMMAP导致创建或延伸超过文件系统中的其当前大小的文件时,新的部分的内容是不确定的。与POSIX文件系统语义的系统中,扩展部分将充满零个字节。

即使在我的64位,32GB RAM系统,我收到以下错误,如果我尝试在一个大的numpy的内存映射文件的读取,而不是使用字节偏移拍摄若干部分:

Overflow Error: memory mapped size must be positive

大数据集是真正与工作有疼痛感。

关于这个问题的

Wikipedia条目: http://en.wikipedia.org/wiki/Memory-mapped_file

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top