ファイルサイズが保存するデータ量よりも大幅に多い場合は、version pinningという問題が発生している可能性があります。
バージョン固定は、他のスレッドが新しいデータを書き込んでいる間に、Realm
インスタンスが予想以上に長く滞在している場合です。 Realm
インスタンスは、最新のバージョンに割り当て解除またはリフレッシュされるまで、見ているデータのバージョンを維持します。別のスレッドがRealm
インスタンスを古いバージョンで開いているときに、1つのスレッドがレルムにデータを書き込んでいる場合、新しいデータは古いデータを上書きできないため、ファイルサイズが増大します。 Realm
インスタンスの割り当てが解除されるか、現在のバージョンに進むと、Realmファイル内の古いバージョンの領域は空きとしてマークされ、後続の書き込みに再利用できます。
バージョンの固定につながる一般的な状況の1つは、ディスパッチキューでRealmを使用し、Realm
インスタンスがディスパッチキューの自動解放プールで終了する場合です。ディスパッチキューにより、自動解放プールが比較的頻繁に排除され、Realm
インスタンスの存続期間が予想以上に長くなる可能性があります。このクラスの問題を回避するために、ディスパッチキュー上のRealmに関連するすべての作業を、自動解放プールで明示的にラップすることをお勧めします。これにより、Realm
インスタンスがタイムリーに解放されます。
Realmインスタンスをバックグラウンドスレッドで閉じることは間違いありません。 1つのトランザクションだけでなく、複数のトランザクションを使用しているかもしれません。 – EpicPandaForce
@EpicPandaForceあなたは部分的に正しいです。私は実際には複数のトランザクションを使用していましたが、私が知る限り、迅速に領域のインスタンスを閉じる方法はありません。 – TheKringar
@EpicPandaForceなぜ、サイズが大きくてそのようにランダムになるのか説明できますか?なぜなら、私が複数の取引をしているのか、まったく同じ取引をしているのかは関係ありません。 – TheKringar