【问题标题】:CFNetwork memory spike when fetching image获取图像时 CFNetwork 内存峰值
【发布时间】:2015-05-29 18:58:56
【问题描述】:

我正在 Instruments 中分析我的应用,当我使用 AFNetworking 获取远程图像时,发现 CFNetwork 的分配量令人不安。

在一个实例中,我看到了 89 MB 的分配(图像大小只有 200 KB 左右)。我附上了一个截图来演示。以前有没有其他人注意到这一点?内存被适当释放,但我不明白为什么会发生这种情况。

提前致谢。

【问题讨论】:

  • 我应该补充一点,我只查看“所有堆分配”,而不是“所有堆和匿名 VM”
  • 您是否找到任何解决方法或任何机会来修复此内存增量?我也面临同样的问题。
  • 不,@Rudeboy,最后还是忍了。
  • 在 iOS 8.3 上检查一下,似乎已修复。
  • 你说得对,好像这个问题已经修复了。感谢您的提醒!

标签: ios afnetworking cfnetwork


【解决方案1】:

我只在 iOS 8 上看到了同样的问题。在任何版本的 iOS 7 上都不会发生这种情况。在模拟器上为 132kb,在设备上为 144kb。

好像和这个问题有关:

https://github.com/AFNetworking/AFNetworking/issues/2314

在此示例中,我正在使用 nsurlsession 执行 http get。如果你点击一个不发送keep-alive的地方,即google.com,它不会malloc那些kb。但是如果你点击了一个发送 keep-alive 的地方,它会的。

NSString * url = [NSString stringWithFormat:@"%@%.20f", @"http://someplace.com/?test=", (double)[[NSDate date] timeIntervalSince1970];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"GET"];
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:nil] resume];

【讨论】:

    猜你喜欢
    • 2014-08-16
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    相关资源
    最近更新 更多