我在测试应用程序的NSCache中存储了300个UIImage对象。这些UIImage由从主包读取的NSData创建。图片大小为1024x768。
运行后,应用程序的内存使用量没有增加。但是,“其他进程”的内存从1.3G大幅增加到了2.02G 737M。
我发现应用程序的内存使用量不包含“ CG栅格数据”。但是在分配工具中,这部分内存正在增长。
环境: iPhone XR XCode 10.1 iOS 12.1.2
我的测试代码:
- (void)mem {
for (int j=0; j<300; j++) {
@autoreleasepool {
NSString *p = [[NSBundle mainBundle] pathForResource:@"pic" ofType:@"jpg"];
NSData *d = [[NSData dataWithContentsOfFile:p] copy];
UIImage *i = [UIImage imageWithData:d];
UIGraphicsBeginImageContext(i.size);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextDrawImage(c, CGRectMake(0, 0, i.size.width, i.size.height), i.CGImage);
i = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.cache setObject:i forKey:@(ii)];
ii++;
}
}
}