Core-Datenspeicherauslastung und Speicherwarnung
Ich habe dieses Problem. Ich habe eine Datenbank mit Bildern in Core Data. Ich hole alle Bilder (ca. 80MB) und stecke sie in ein NSMutableArray. Die Objekte sind korrekt fehlerhaft:
NSArray *fetchResults = [self.managedObjectContext executeFetchRequest:request error:&error];
self.cache = [NSMutableArray arrayWithArray:fetchResults];
for (ImageCache *imageObject in self.cache) {
NSLog(@"Is fault? %i", [imageObject isFault]);
}
Beim Lesen des Protokolls sehe ich, dass die Objekte alle korrekt fehlerhaft sind. Bei Verwendung von Instrumenten sehe ich jedoch, dass 80 MB Speicher verwendet werden. Ich denke, aus diesem Grund speichert Core Data die Ergebnisse zwischen und sollte den Speicher freigeben, wenn er benötigt wird. Aber (und das ist mein "Problem"), wenn ich eine Speicherwarnung simuliere, passiert nichts! Die 80MB bleiben dort.
Bei den Instrumenten - Zuordnungen werden die 80 MB von vielen Malloc verwendet: (Beispiel)
Grafikkategorie Live Bytes # Living # Transitorisch Gesamt Bytes # Overall # Allocations (Netto / Insgesamt) 0 Malloc 176,00 KB 8,59 MB 50 57 18,39 MB 107% 0,00,% 0,00 0 Malloc 200,00 KB 8,20 MB 42 460 98,05 MB 502% 0,00% 0,04 0 Malloc 168,00 KB 7,05 MB 43 19 10,17 MB 62% 0,00% 0,00
Dies ist ein Link zu einem Bild des gesamten Aufrufbaums:https://www.dropbox.com/s/du1b5a5wooif4w7/Call%20Tree.png
Irgendwelche Ideen? Vielen Dank