什麼限制了內存映射文件的大小?我知道它不能大於未分配地址空間的最大連續塊,並且應該有足夠的可用磁盤空間。但是還有其他限制嗎?內存映射文件有多大?
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. 內存映射文件.NET
- 3. Windows內存映射文件
- 4. 內存映射文件
- 5. 內存映射文件和最大文件大小
- 6. Linux內存映射文件保留大量物理內存
- 7. 寫入內存映射文件比非內存映射文件慢
- 8. 內存映射文件 - 映射結構而不是文件?
- 9. 文件系統 - 內存映射文件
- 10. 使用內存映射文件讀取大文件
- 11. 內存映射文件如何處理大於內存的文件?
- 12. 最大內存映射分配大小?
- 13. 內存映射
- 14. .NET 4內存映射文件
- 15. 何時使用內存映射文件?
- 16. 鏈接增強內存映射文件
- 17. 內存映射庫的文件名osx
- 18. 截斷內存映射文件
- 19. 追加到內存映射文件
- 20. Java內存映射文件和交換
- 21. FILE_FLAG_DELETE_ON_CLOSE和內存映射文件
- 22. Java - 內存映射文件和刷新
- 23. 識別內存映射文件
- 24. C++:內存映射文件上的Fetch_add
- 25. 內存映射文件的位置
- 26. C++:帶內存映射文件的DLL
- 27. C#訪問內存映射文件
- 28. 截斷內存映射文件
- 29. 託管內存映射文件
- 30. 命名內存映射文件
平臺? Windows還是Linux? – 2009-04-07 16:08:18