Điều gì giới hạn kích thước của tệp ánh xạ bộ nhớ? Tôi biết nó không thể lớn hơn đoạn liên tục lớn nhất của không gian địa chỉ chưa được phân bổ, và rằng phải có đủ không gian đĩa trống. Nhưng có những giới hạn nào khác không?Tệp có ánh xạ bộ nhớ lớn có thể lớn đến mức nào?
Trả lời
Bạn đang quá bảo thủ: Tệp ánh xạ bộ nhớ có thể lớn hơn không gian địa chỉ. xem của tệp ánh xạ bộ nhớ bị giới hạn bởi các ràng buộc bộ nhớ hệ điều hành, nhưng đó chỉ là một phần của tệp bạn đang xem cùng một lúc. (Và tôi đoán về mặt kỹ thuật bạn có thể lập bản đồ nhiều khung nhìn của các phần không liên tục của tệp cùng một lúc, do đó, ngoài giới hạn về độ dài và độ dài của trang, nó chỉ là tổng số byte bạn đang xem mà đặt ra giới hạn. [0-1024] và byte [2 -2 + 1024] với hai quan điểm riêng biệt.)
Trong MS Windows, hãy nhìn vào MapViewOfFile chức năng. Nó có hiệu quả mất một tập tin 64-bit bù đắp và chiều dài 32-bit.
Không được có giới hạn nào khác. Không phải là đủ? ;-)
Trên hệ điều hành 64 bit, các giới hạn này có vẻ khá lỏng lẻo ... – user88185
Dưới Windows: "Kích thước của một cái nhìn tập tin được giới hạn ở những khối liền kề có sẵn lớn nhất của bộ nhớ ảo ưa thổ lộ này là nhiều nhất là 2 GB trừ bộ nhớ ảo đã thuộc về quá trình này.".
Từ MDSN.
Tôi không chắc chắn về LINUX/OSX/Dù gì khác, nhưng nó cũng có thể liên quan đến không gian địa chỉ.
chỉ để làm rõ, đó là kích thước của một chế độ xem tệp, không phải kích thước của tệp. –
"2 GB trừ bộ nhớ ảo đã được dành riêng cho quá trình" trên máy 32 bit? Nó khác nhau trên một hộp 64 bit? – user88185
Với FUSE trên Linux, bạn cũng có thể tạo hệ thống tệp trong bộ nhớ mở rộng tới đĩa theo yêu cầu. Tôi không chắc chắn rằng đủ điều kiện như bộ nhớ ánh xạ, và sự phân biệt được loại mờ.
Wikipedia về đề tài này: http://en.wikipedia.org/wiki/Memory-mapped_file
Tôi không thấy các giới hạn khác được đề cập trong bài viết trên Wikipedia này, điều đó có nghĩa là không có gì cả? – user88185
Trong khi điều này về lý thuyết có thể trả lời câu hỏi, [nó sẽ là thích hợp hơn] (http: //meta.stackoverflow.com/q/8259) để bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. –
này đã được kinh nghiệm của tôi khi sử dụng tập tin bộ nhớ ánh xạ dưới Win32:
Nếu bản đồ của bạn toàn bộ tập tin vào một phân đoạn, nó thường tap-out ở xung quanh 750 MB, bởi vì nó không thể tìm thấy một khối bộ nhớ tiếp giáp lớn hơn. Nếu bạn chia nó thành các phân đoạn nhỏ hơn, hãy nói 100MB mỗi phân đoạn, bạn có thể nhận được khoảng 1500MB-1800MB tùy thuộc vào những gì khác đang chạy.
Nếu bạn sử dụng /3g switch, bạn có thể nhận được hơn 2GB tối đa khoảng 2700MB nhưng hiệu suất hệ điều hành bị phạt.
Tôi không chắc chắn về 64-bit, tôi chưa bao giờ thử nó nhưng tôi cho rằng kích thước tệp tối đa sẽ bị giới hạn bởi số lượng bộ nhớ vật lý bạn có.
Trên giới hạn 64 bit là không gian địa chỉ có sẵn, giống như trên 32-bit. Bạn có thể ánh xạ chế độ xem 1 GB trên máy 32 bit chỉ có bộ nhớ vật lý 32 MB. Cũng giống như cách bạn có thể ánh xạ chế độ xem 10 TB trên máy 32 bit chỉ có 0,5 GB bộ nhớ. Chỉ những trang 4kb bạn thực sự truy cập mới được ánh xạ vào bộ nhớ thực. – springy76
@ springy76: bạn không thể ánh xạ chế độ xem 10 TB trên máy 32 bit. Chỉ trên 64 bit. –
@SergeyK. bạn đang chết tiệt, đó cũng là những gì tôi muốn viết - nhưng ngón tay của tôi đã gõ một thứ khác. Nó nên có đọc "Cùng một cách bạn có thể bản đồ một cái nhìn 10TB trên một máy 64-bit mà chỉ có 0,5 GB bộ nhớ" – springy76
- 1. Zero, một ánh xạ bộ nhớ lớn với `madvise`
- 2. Tập tin ánh xạ bộ nhớ .NET
- 3. Có thể tránh các bản sao dữ liệu khi sử dụng các tệp ánh xạ bộ nhớ trong C# không?
- 4. Có sự khác biệt nào giữa tệp iostream được ánh xạ và tăng tệp ánh xạ interprocess không?
- 5. Tệp bộ nhớ được ánh xạ trên Windows
- 6. GPU - Ánh xạ bộ nhớ hệ thống
- 7. Giám sát các tệp ánh xạ bộ nhớ trong Windows
- 8. Trọng tải nhiệm vụ của appengine có thể lớn đến mức nào?
- 9. Ưu điểm của tệp ánh xạ bộ nhớ là gì?
- 10. Các tệp ánh xạ bộ nhớ trong Java
- 11. kích thước phân bổ bản đồ bộ nhớ lớn nhất?
- 12. Số lượng lớn các bảng và mức tiêu thụ bộ nhớ Hibernate
- 13. Làm thế nào tôi có thể đọc nhanh byte từ một tệp ánh xạ bộ nhớ trong .NET?
- 14. Có giới hạn thực tế về số lượng tệp ánh xạ bộ nhớ trong iOS không?
- 15. Tệp .htaccess có thể quá lớn
- 16. Khi nào sử dụng các tệp được ánh xạ trên bộ nhớ?
- 17. Làm thế nào để xử lý song song dữ liệu trong tệp ánh xạ bộ nhớ
- 18. Rò rỉ bộ nhớ lớn với libxml2
- 19. bắt segfault, bộ nhớ không ánh xạ lỗi
- 20. Hợp nhất lớn/Quản lý bộ nhớ
- 21. Làm thế nào để không đồng bộ tuôn ra một tập tin ánh xạ bộ nhớ?
- 22. Python hết bộ nhớ trên tệp CSV lớn (numpy)
- 23. Cách mô phỏng ánh xạ bộ nhớ I/O
- 24. Làm thế nào tôi có thể ánh xạ điều chỉnh mức của Photoshop vào bộ lọc Hình ảnh lõi?
- 25. Tôi có thể nhận được đường dẫn cho Tệp Bộ nhớ được Ánh xạ không? (.NET 4.0)
- 26. uiwebview và mất bộ nhớ rất lớn
- 27. Hiệu suất của các tệp ánh xạ bộ nhớ Win32 so với CRT fopen/fread
- 28. Mức tiêu thụ bộ nhớ lớn khi phân tích cú pháp JSON và tạo NSManagedObjects
- 29. Các tệp được ánh xạ trên bộ nhớ: ưu và nhược điểm?
- 30. Loại bộ nhớ C# lớn hơn ulong
Nền tảng? Windows hoặc Linux? –