什么限制了内存映射文件的大小?我知道它不能大于未分配地址空间的最大连续块,并且应该有足够的可用磁盘空间。但是还有其他限制吗?内存映射文件有多大?
23
A
回答
24
你太保守了:内存映射文件可能大于地址空间。内存映射文件的视图受操作系统内存限制的限制,但这只是您一次查看的文件的一部分。 (我想技术上你可以同时映射文件的不连续部分的多个视图,所以除了开销和页面长度限制之外,它只是你查看的总字节数,这会造成限制。 [0〜1024]和字节[2 至2 + 1024]具有两个单独的视图。)
在MS Windows中,看看MapViewOfFile功能。它实际上需要64位文件偏移量和32位长度。
1
1
0
在linux上使用FUSE你也可以创建一个内存扩展到磁盘的文件系统。我不确定这是否符合内存映射的规定,并且区分会变得模糊。
-3
关于这个问题
9
这已经使用Win32下内存映射文件时,根据我的经验:
如果你的地图将整个文件成一个网段,一般在各地的水龙头出来750 MB,因为它无法找到更大的连续内存块。如果你把它分成更小的部分,比如说每个100MB,你可以获得大约1500MB-1800MB,这取决于还有哪些运行。
如果您使用/3g switch,您可以获得2GB以上至2700MB左右的性能,但操作系统性能会受到影响。
我不确定64位,我从来没有尝试过,但我认为最大文件大小,然后限制只有物理内存的数量。
相关问题
- 1. 内存映射文件C++
- 2. Windows内存映射文件
- 3. 内存映射文件.NET
- 4. 内存映射文件和最大文件大小
- 5. Linux内存映射文件保留大量物理内存
- 6. 内存映射文件 - 映射结构而不是文件?
- 7. 文件系统 - 内存映射文件
- 8. 使用内存映射文件读取大文件
- 9. 最大内存映射分配大小?
- 10. 截断内存映射文件
- 11. 追加到内存映射文件
- 12. 内存映射文件问题
- 13. 链接增强内存映射文件
- 14. 内存映射文件的使用
- 15. 内存映射文件偏移量低
- 16. 内存映射文件 - FileNotFoundException异常
- 17. 内存映射,文件在Windows
- 18. C++:内存映射文件上的Fetch_add
- 19. 内存映射库的文件名osx
- 20. Java内存映射文件和交换
- 21. C#内存映射文件 - 位图
- 22. 内存映射文件误解?
- 23. 识别内存映射文件
- 24. .NET 4内存映射文件
- 25. c#内存映射文件读
- 26. Java - 内存映射文件和刷新
- 27. C#访问内存映射文件
- 28. 内存映射文件的位置
- 29. numpy数组的内存映射文件
- 30. 何时使用内存映射文件?
平台? Windows还是Linux? – 2009-04-07 16:08:18