2017-11-08 7 views
-2

のレルムを開こうとした時、知っている方法:その安全ではありませんが、「<a href="https://realm.io/docs/objc/latest/#current-limitations" rel="nofollow noreferrer">Realm Limitations</a>」の現在のリストからiOSの

任意の単一レルムのファイルは、あなたの アプリケーションをマッピングするために許されるメモリの量よりも大きくすることはできませんiOSの

では、これは私がProcessInfo.processInfo.physicalMemoryをチェックし、それがFileManager.default.attributesOfItem(atPath:realmPath)[FileAttributeKey.size](プラス断片化などを考慮するために可変量)よりも小さい場合、私はレルムを開こうとするべきではないということを意味するのでしょうか?

答えて

0

Realmファイルが大きすぎてmmapファイルをマップできない場合、Swiftエラーが発生します。したがって、実際に行う必要があるのは、tryにレルムを開いて、Realm.Error.addressSpaceExhaustedのエラーをキャッチすることだけです。

大きな問題は、ファイルが大きすぎることがわかったらどうするかです。私たちの打ち上げ機能のコンパクションでは、最初にファイルをオープン可能にする必要があります(この問題を先取りするためにはコンパクトな起動を使用することをお勧めします)。私たちはこの問題を緩和する方法に取り組んでいます。

mmapは、物理RAMの空き容量(ファイルをマップするにはRAMが必要ですが)にも、理論上の最大値付近にiOSが課す制限にも依存しません。最後に、仮想メモリの制限はプロセス単位で処理されます。つまり、開くことができるレルムファイルのサイズは、そのプロセスによってマップされた他のファイルと、他のものに使用されているプロセスのメモリ量によって決まります。

+0

こんにちは、第2段落で言ったことは、 'shouldCompactOnLaunch'ブロックを追加すると、' addressSpaceExhausted'エラーが発生しないということですか? –

関連する問題

 関連する問題