我有这个问题。我在 Core Data 中有一个图像数据库。我获取所有图像(大约 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 仍然存在。
查看工具 - 分配,许多 Malloc 使用 80MB:(示例)
图表类别 Live Bytes # Living # Transitory 总体字节数 # 总体 # 分配(净/总体) 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
这是整个调用树图像的链接:https ://www.dropbox.com/s/du1b5a5wooif4w7/Call%20Tree.png
有任何想法吗?谢谢