内存映射文件有多大?

use*_*185 24 mmap memory-mapped-files

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

Jas*_*n S 24

你太保守了:内存映射文件可能比地址空间大.内存映射文件的视图受操作系统内存限制的限制,但这只是您一次查看的文件的一部分.(我想从技术上讲,你可以同时映射文件不连续部分的多个视图,所以除了开销和页面长度限制之外,它只是你所看到的总字节数构成一个限制.你可以查看字节[0到1024]和字节[2 40到2 40 + 1024],带有两个单独的视图.)

在MS Windows中,查看MapViewOfFile函数.它实际上需要64位文件偏移和32位长度.


Ala*_*ark 9

这是我在Win32下使用内存映射文件时的经验:

如果将整个文件映射到一个段中,它通常会以大约750 MB的速度点击,因为它找不到更大的连续内存块.如果你把它分成更小的部分,比如说每个100MB,你可以得到大约1500MB-1800MB,具体取决于运行的是什么.

如果你使用/ 3g交换机,你可以获得超过2GB到大约2700MB但操作系统性能受到惩罚.

我不确定64位,我从来没有尝试过,但我认为最大文件大小仅限于你拥有的物理内存量.

  • @SergeyK.你是对的,这也是我想写的东西 - 但是我的手指输了别的东西.它应该已读"与在只有0.5GB内存的64位机器上映射10TB视图的方式相同" (4认同)
  • @springy76:您无法在 32 位机器上映射 10TB 视图。仅适用于 64 位。 (2认同)