我有一个问题。 我在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仍然存在。
查看Instruments - 分配情况,80MB由许多Malloc使用:(示例)
图表 类别 实时字节数 # 存活 # 瞬态 总字节数 # 总数 # 分配(净/总) 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 有什么想法吗?谢谢