【问题标题】:Realm iOS RAM limitationRealm iOS RAM 限制
【发布时间】:2015-08-08 08:25:33
【问题描述】:

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

“任何单个 Realm 文件都不能大于您的应用程序允许在 iOS 中映射的内存量——这会因设备而异,并且取决于当时内存空间的碎片化程度(有一个雷达open about this issue: rdar://17119975)。如果需要存储更多数据,可以将其映射到多个 Realm 文件。”

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

【问题讨论】:

  • 我认为这意味着如果您的 Realm 文件大于总 RAM,则无法加载。虽然这是一个相当严格的限制......
  • 你会想错的。

标签: ios realm


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的意见。实际上,我对这种说法感到困惑:“取决于当时内存空间的碎片化程度”。当前内存碎片如何影响文件 2 内存映射?
    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 2011-12-21
    • 2011-06-30
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多