来自境界限制:https://realm.io/docs/objc/latest/#current-limitations
“任何单个Realm文件都不能大于您的应用程序允许在iOS中映射的内存量 - 这会根据设备的变化而变化,并且取决于该时间点内存空间的碎片程度(有雷达)打开这个问题:rdar:// 17119975)。如果你需要存储更多数据,你可以将它映射到多个Realm文件。“
这是否意味着单个Realm文件始终存储在RAM中? 或者这是否意味着地址空间应该足够大? 这句话非常令人困惑......
答案 0 :(得分:4)
由于Realm使用mmap
,它目前依赖程序address space来获得一个连续的无人认领地址块,大于Realm文件的大小。这与可用内存的实际数量不同,因为内存可以来自地址空间的许多不同部分{@ 1}},留下大量未使用的内存,但没有足够的大块地址空间free
领域文件。
答案 1 :(得分:1)
这是关于内存映射,即使用该文件作为后备存储的虚拟内存。从理论上讲,操作系统可以通过这种方式访问无限量的数据,完全独立于您拥有的RAM数量。这些文件绝对不会保存在RAM中。它们占用地址空间,因此您将受限于32位应用程序,但它们不会占用RAM。
在实践中,我尝试映射1GB文件,并且没有问题。