2016-03-25 3 views
5

この問題は現在一般的なものであり、コードでは混乱することはありません。コアデータ過大なVM:SQLiteページキャッシュ

私は、コアデータ(sqlite)をデータストアに使用するiOSアプリケーションを使用しています。モデルはかなり複雑で、オブジェクトの階層構造が大きくなっています。これらの大きなデータセットをフェッチしてインポートすると、メモリ警告のためにしばらくしてからアプリケーションがシャットダウンすることに気付いています。

割り当てプロファイラでは、過度の「一時的な」VM:SQLiteページオブジェクトが表示されます。このサイズは成長し続けていますが、決してダウンしません。私はNSManagedObjectContextのすべてのセーブがperformBlock呼び出し内で確実に行われるようにしました。

オブジェクトのコンテキストが解放されたりリセットされたりしていないように見えます。

NSManagedObjectContextでundoManagerを無効にしようとしました。 stalenessIntervalを非常に低い値(1.0)に設定し、インポート時にデータを保存した後でMOCのresetを呼び出します。

一時的なVM SQLiteページキャッシュが高値を維持し続けると、これはどういう意味ですか? ページキャッシュを下げるために何をする必要がありますか?
このキャッシュが大規模なCore Dataアプリケーションに到達するには、どの程度の大きさがありますか?

おかげで、

+0

解決策は見つかりましたか?私はちょうど同じ問題に直面している。 –

+0

ちょうど以下の質問に答えた。 – dmclean

答えて

0

は、まあそれは楽器の一過性のVM SQLiteのページキャッシュの列のショーは、セッションではなく、「現在」の値に累積で判明します。もちろん、それは決して落ちることはありません!

管理対象オブジェクトのコンテキストが確実にクリアされるようにするためのその他の最適化では、CoreDataメモリの問題が修正されています。

ここに素晴らしい記事があります:Core Data issues with memory allocation