2016-03-25 34 views
5

Continuerò a questa domanda generale per ora evitando di ingombrare questo con il codice.Dati anagrafici VM eccessiva: cache di pagine SQLite

Ho un'applicazione iOS che utilizza Core Data (sqlite) per il suo archivio dati. Il modello è abbastanza complesso, con una grande gerarchia di oggetti. Quando recupero e importa questi insiemi di dati di grandi dimensioni, mi accorgo che l'applicazione si spegne dopo un po 'a causa di un avviso di memoria.

Il profiler Allocations mi mostra un numero eccessivo di oggetti "transitori" VM: SQLite pagina. La dimensione di questo continua a crescere e crescere ma MAI cala. Ho provato a garantire che tutti i miei salvataggi NSManagedObjectContext si verifichino all'interno delle chiamate performBlock.

Mi sembra che ci siano contesti oggetto che non vengono deallocati e/o ripristinati.

Ho provato a disabilitare undoManager in NSManagedObjectContext. impostando stalenessInterval su un valore molto basso (1.0) e chiamando reset sui miei MOC dopo aver finito di salvare i dati al momento dell'importazione.

Cosa significa questo quando la cache della pagina transitoria VM SQLite continua a salire così in alto? Cosa deve essere fatto per far cadere la cache della pagina?
Qual è una dimensione accettabile per questa cache per accedere a una grande applicazione Core Data?

Grazie,

+0

sono stati in grado di trovare qualche soluzione? Sto affrontando esattamente lo stesso problema .. –

+0

Ho appena risposto alla domanda qui sotto. – dmclean

risposta

0

Ebbene si scopre il transitorio VM SQLite cache della pagina colonna di spettacolo in Instruments è cumulativa alla sessione, non il valore "corrente". Beh, certo che non va mai giù allora!

Si scopre che alcune altre ottimizzazioni per garantire che i contesti degli oggetti gestiti vengano eliminati risolvono il nostro problema di memoria CoreData.

Ottimo articolo qui sul tema: Core Data issues with memory allocation