【发布时间】:2015-04-19 07:56:20
【问题描述】:
我正在开发一个从 API 下载和解析大约 40k json 文件的应用程序。由于我的程序结构,我不会立即解析它们,而是将它们保存在 NSMutable 数组中。每个 json 大约 1KB,其中大多数甚至更少。如果我的计算是正确的,那应该会产生大约 40MB(+ 一些开销)的分配内存。但是当我运行该应用程序时,内存使用量攀升至超过 4GB。
我在这里泄露了什么吗?由于我使用垃圾收集,我不应该需要释放任何东西,对吧?还是我的计算完全错误?
这是我的代码:
- (void) loadItemsForIds:(NSArray*)idList {
for (NSNumber* n in idList) {
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://someapi.com/somejson.json?id=%@", n]];
NSData* response = [NSData dataWithContentsOfURL:url];
NSDictionary *loadedData = [NSJSONSerialization JSONObjectWithData:response options:0 error:nil];
@synchronized(self.updateData) {
[self.updateData addObject:loadedData];
}
[self performSelectorOnMainThread:@selector(progressLoadingInterface:) withObject:[loadedData valueForKey:@"name"] waitUntilDone:NO];
};
}
编辑:
发现问题甚至存在,如果我不将数据保存到数组中。经过一些研究,我偶然发现了这个处理相同问题的问题:iPhone - Memory Leak - NSData dataWithContentsOfUrl & UIWebView
那么我的问题可能需要删除。
【问题讨论】:
-
垃圾回收?或者只是弧
标签: objective-c json cocoa memory-leaks nsmutablearray