我正在使用以下代码从我的iphone(保存在iphone上的文件)中读取大型json文件:
dispatch_async(kBgQueue, ^{
// do something that takes a long time with receivedData here
NSError* error;
NSString *filePath = [self getFilePathWithName:LOCAL_JSON];
NSData *jsonData = [NSData dataWithContentsOfFile:filePath];
NSDictionary *dict = (NSDictionary*)[NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&error];
dispatch_async( dispatch_get_main_queue(), ^{
HideHUD;
DLog(@"Reading done");
ShowMemoryUsageWithTitle(@"after reading json");
return;
});
dict = nil;
});
完成阅读后,内存使用量增加了30 MB,例如总内存使用量为60 MB。之后,我试图再次阅读并且是90 MB,之后是120 MB。 所以结论是内存不是自动释放的。每次我的阅读记忆都在增加。我正在使用ARC。
我读完json文件后如何释放内存?
更新1: 试图把'#34; hard"在@autoreleasepool {}内部工作,但内存使用情况没有改变
更新2: 尝试没有dispatch_async
更新3: 我尝试使用像https://github.com/johnezang/JSONKit这样的第三方库但问题相同。当我在测试时,我只是在嘲笑那件事,而不是其他事情。