この問題があります。CoreDataに画像のデータベースがあります。すべての画像(約80MB)をフェッチし、NSMutableArrayに配置します。オブジェクトは正しく障害が発生しています。
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]);
}
ログを読むと、オブジェクトはすべて正しく障害が発生していることがわかります。ただし、Instrumentsを使用すると、80MBのメモリが使用されていることがわかります。これが、Core Dataが結果をキャッシュし、必要なときにメモリを解放する理由だと思います。しかし(そしてこれが私の「問題」です)、メモリ警告をシミュレートしても何も起こりません!80MBはそこに残ります。
機器-割り当てを見ると、80MBは多くのMallocで使用されています:(例)
グラフカテゴリライブバイト数#リビング#一時的な全体バイト数#全体#割り当て(ネット/全体)0マロック176,00 KB 8,59 MB 50 57 18,39 MB 107%0.00、%0.000マロック200,00KB 8,20 MB 42460 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
これは、コールツリー全体の画像へのリンクです:https ://www.dropbox.com/s/du1b5a5wooif4w7/Call%20Tree.png
何か案は?ありがとう