【问题标题】:How to know when its not safe to open a Realm on iOS如何知道何时在 iOS 上打开 Realm 不安全
【发布时间】:2017-11-08 20:05:20
【问题描述】:

来自“Realm Limitations”的当前列表:

任何单个 Realm 文件都不能大于您的内存量 应用程序将被允许在 iOS 中映射

这是否意味着如果我检查ProcessInfo.processInfo.physicalMemory 并且它小于FileManager.default.attributesOfItem(atPath:realmPath)[FileAttributeKey.size](加上可变数量以考虑碎片等),我不应该尝试打开领域?

【问题讨论】:

    标签: ios realm


    【解决方案1】:

    如果 Realm 文件太大,mmap 无法映射文件,您应该会收到 Swift 错误。所以你真正需要做的就是try 打开领域并捕获任何Realm.Error.addressSpaceExhausted 错误。

    更大的问题是一旦您知道文件太大该怎么办。我们的启动时压缩功能要求文件首先是可打开的,这将其排除在外(这就是为什么我们建议使用启动时压缩来预先解决此问题)。我们正在努力解决这个问题。

    mmap 不应取决于您拥有的可用物理 RAM 的数量(尽管映射文件需要一定数量的 RAM),iOS 施加的限制也不应接近理论最大值。最后,虚拟内存限制在每个进程的基础上运行,这意味着您可以打开的 Realm 文件的大小取决于该进程映射了哪些其他文件以及该进程用于其他事情的内存量。

    【讨论】:

    • 嗨,您在第二段中所说的意思是如果我添加 shouldCompactOnLaunch 块,我将不会出现 addressSpaceExhausted 错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多