2015-08-08 55 views
3

从境界的限制:https://realm.io/docs/objc/latest/#current-limitations领域的iOS RAM限制

“任何单一领域的文件不能超过你的应用程序将被允许在iOS中映射的内存量较大的 - 每个设备这个变化,以及取决于如何分割了内存空间就在那个时间点(这里有一个关于这个问题的雷达:rdar:// 17119975)如果你需要存储更多的数据,你可以将它映射到多个Realm文件中。

这是否意味着单个Realm文件总是存储在RAM中? 或者这是否意味着地址空间应该足够大? 这种说法很混乱......

+0

我认为这意味着如果你的领域文件大于总RAM,那么它不能加载。虽然这是一个相当苛刻的限制... – EpicPandaForce

+0

你会想错。 – gnasher729

回答

4

因为Realm在底层使用mmap,所以它当前依赖于程序address space将一个连续的未声明地址块大于Realm文件的大小。这与实际的可用内存量不同,因为内存可能来自地址空间的许多不同部分,留下大量未使用的内存,但没有足够大的地址空间块来存储Realm文件。

1

这是在谈论内存映射,即使用文件作为后备存储的虚拟内存。理论上,操作系统可以以这种方式访问​​无限量的数据,完全独立于您拥有的RAM数量。这些文件绝对不会保存在RAM中。他们占用地址空间,所以你将被限制在一个32位的应用程序,但他们不占用RAM。

实际上,我试图映射一个1GB的文件,并没有问题的工作。

+0

谢谢您的意见。实际上,我对这个陈述感到困惑:“取决于当时存储空间的分散程度”。当前内存碎片如何影响文件2内存映射? – AlexeyVMP