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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage