iOS:CGRasterData不包含在应用程序内存中,为什么?

时间:2019-01-29 14:33:08

标签: ios xcode

我在测试应用程序的NSCache中存储了300个UIImage对象。这些UIImage由从主包读取的NSData创建。图片大小为1024x768。

运行后,应用程序的内存使用量没有增加。但是,“其他进程”的内存从1.3G大幅增加到了2.02G 737M。

enter image description here

enter image description here

我发现应用程序的内存使用量不包含“ CG栅格数据”。但是在分配工具中,这部分内存正在增长。

enter image description here

环境: 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++;
        }
    }
}

0 个答案:

没有答案