2016-03-25 6 views
5

Ich werde diese Frage für den Augenblick generalüberwinden und vermeiden, diese mit Code zu überfüllen.Core Data Excessive VM: SQLite Seitencache

Ich habe eine iOS-Anwendung, die Core Data (sqlite) für seinen Datenspeicher verwendet. Das Modell ist ziemlich komplex mit einer großen Hierarchie von Objekten. Beim Abrufen und Importieren dieser großen Datensätze merke ich, dass die Anwendung nach einer Weile aufgrund einer Speicherwarnung heruntergefahren wird.

Der Allocations Profiler zeigt mir übermäßige "vorübergehende" VM: SQLite Seite Objekte. Die Größe davon wächst und wächst, geht aber NIEMALS unter. Ich habe versucht, sicherzustellen, dass alle meine NSManagedObjectContext speichert innerhalb von performBlock-Aufrufe auftreten.

Es scheint mir, als ob es Objektkontexte gibt, die nicht freigegeben und/oder zurückgesetzt werden.

Ich habe versucht, undoManager in NSManagedObjectContext deaktivieren. Setzen Sie den stalenessInterval auf einen sehr niedrigen Wert (1.0) und rufen Sie Reset auf meinen MOCs auf, nachdem Sie die Daten beim Importieren gespeichert haben.

Was bedeutet das, wenn der vorübergehende Seitencache der VM SQLite weiterhin so hoch steigt? Was ist zu tun, damit der Seiten-Cache nicht mehr aktiv ist?
Was ist eine akzeptable Größe für diesen Cache in einer großen Core Data-Anwendung?

Danke,

+0

Können Sie irgendeine Lösung finden? Ich stehe genau dem gleichen Problem gegenüber. –

+0

Ich habe gerade die Frage beantwortet. – dmclean

Antwort

0

Nun stellt sich die transiente VM SQLite Seiten-Cache-Spalte zeigen in Instruments aus dem Sitzungs kumulativ ist, nicht der „aktuellen“ Wert. Natürlich geht es dann nie unter!

Es stellt sich heraus, dass einige andere Optimierungen, die sicherstellen, dass verwaltete Objektkontexte beseitigt werden, unser CoreData-Speicherproblem behoben haben.

Große Artikel hier zum Thema: Core Data issues with memory allocation