use*_*185 24 mmap memory-mapped-files
什么限制了内存映射文件的大小?我知道它不能超过最大的连续未分配地址空间块,并且应该有足够的可用磁盘空间.但还有其他限制吗?
Jas*_*n S 24
你太保守了:内存映射文件可能比地址空间大.内存映射文件的视图受操作系统内存限制的限制,但这只是您一次查看的文件的一部分.(我想从技术上讲,你可以同时映射文件不连续部分的多个视图,所以除了开销和页面长度限制之外,它只是你所看到的总字节数构成一个限制.你可以查看字节[0到1024]和字节[2 40到2 40 + 1024],带有两个单独的视图.)
在MS Windows中,查看MapViewOfFile函数.它实际上需要64位文件偏移和32位长度.
这是我在Win32下使用内存映射文件时的经验:
如果将整个文件映射到一个段中,它通常会以大约750 MB的速度点击,因为它找不到更大的连续内存块.如果你把它分成更小的部分,比如说每个100MB,你可以得到大约1500MB-1800MB,具体取决于运行的是什么.
如果你使用/ 3g交换机,你可以获得超过2GB到大约2700MB但操作系统性能受到惩罚.
我不确定64位,我从来没有尝试过,但我认为最大文件大小仅限于你拥有的物理内存量.
| 归档时间: |
|
| 查看次数: |
21700 次 |
| 最近记录: |