iOS hạt nhân phân bổ khoảng 700mb bộ nhớ ảo cho mỗi quá trình. Vì vậy, đó sẽ là giới hạn của bạn.
Giới hạn bạn có trên RAM sẽ khác với dữ liệu trang hạt nhân vào RAM từ bộ nhớ ảo khi bạn chạm vào dữ liệu được ánh xạ. Khi RAM tự lấp đầy, khoảng 40mb trên iphone 4, tùy thuộc vào lượng RAM được các ứng dụng khác kết nối, và bạn yêu cầu nhiều dữ liệu được ánh xạ hơn, hạt nhân sẽ cần dữ liệu trang trong RAM và thay thế bằng dữ liệu được yêu cầu bởi phân trang nó thành RAM.
Một điều cần nhớ là nếu bạn sử dụng PROT_READ | PROT_WRITE
thì bạn đang cho phép ghi dữ liệu vào tệp được ánh xạ. Điều này sau đó sẽ tác động đến 700mb không gian được cấp phát nếu bạn quyết định ghi dữ liệu vào tệp được ánh xạ.
Vì vậy, giới hạn là 700MB cho bộ nhớ ảo, cho dù bạn ánh xạ một tệp 500MB và sau đó ghi 200MB dữ liệu khác vào bộ nhớ đó hoặc nếu bạn có, ví dụ: 10 X 70mb ánh xạ tệp mà bạn vừa đọc.
Một điều cuối cùng là bạn có thể phát hành tệp đã mở là nguồn dữ liệu được ánh xạ ngay sau khi bạn nhận được tệp ánh xạ thành công bằng cách sử dụng mmap()
.
Hy vọng điều này sẽ hữu ích.
Thông tin thêm:
Về bộ nhớ ảo 700mb của iphone và xung quanh 40MB RAM, điều này xuất phát từ làm hồ sơ sử dụng công cụ.
Về hoạt động thực tế của quản lý bộ nhớ hệ thống. Đọc trên virtual memory Về cách tính năng này hoạt động trên iOS. Đọc tài liệu về táo trên virtual memory tập trung vào OS X nhưng đề cập đến sự khác biệt trên iOS
Bạn đã thử tạo chúng cho đến khi ứng dụng gặp sự cố chưa? Thông báo lỗi bạn nhận được sẽ cho bạn biết giới hạn nào bạn đã đạt trước tiên. – Douglas