领域iOS RAM限制

时间:2015-08-08 08:25:33

标签: ios realm

来自境界限制:https://realm.io/docs/objc/latest/#current-limitations

“任何单个Realm文件都不能大于您的应用程序允许在iOS中映射的内存量 - 这会根据设备的变化而变化,并且取决于该时间点内存空间的碎片程度(有雷达)打开这个问题:rdar:// 17119975)。如果你需要存储更多数据,你可以将它映射到多个Realm文件。“

这是否意味着单个Realm文件始终存储在RAM中? 或者这是否意味着地址空间应该足够大? 这句话非常令人困惑......

2 个答案:

答案 0 :(得分:4)

由于Realm使用mmap,它目前依赖程序address space来获得一个连续的无人认领地址块,大于Realm文件的大小。这与可用内存的实际数量不同,因为内存可以来自地址空间的许多不同部分{@ 1}},留下大量未使用的内存,但没有足够的大块地址空间free领域文件。

答案 1 :(得分:1)

这是关于内存映射,即使用该文件作为后备存储的虚拟内存。从理论上讲,操作系统可以通过这种方式访问​​无限量的数据,完全独立于您拥有的RAM数量。这些文件绝对不会保存在RAM中。它们占用地址空间,因此您将受限于32位应用程序,但它们不会占用RAM。

在实践中,我尝试映射1GB文件,并且没有问题。