iOS内存使用率增加,可以';我找不到罪犯

iOS内存使用率增加,可以';我找不到罪犯,ios,xcode,afnetworking,instruments,Ios,Xcode,Afnetworking,Instruments,我正在尝试使用AFNetworking 2.5下载大量图像,并将它们流式传输到磁盘。根据Xcode中的内存监视器,这会导致无限内存增长(最终导致内存警告和强制退出)——但使用分配工具分析内存使用情况表明内存使用情况是稳定的 我认为Xcode在这里是错误的,但为什么我的应用会被iOS扼杀呢 仪器显示了这一点——峰值是核心数据查询,其余是图像下载——峰值约为9.5MB,其余约为8.5MB 我也尝试过Heapshot分析——它显示了一点点的增长,但与Xcode报告的数量相差甚远 Xcode的内存监

我正在尝试使用AFNetworking 2.5下载大量图像,并将它们流式传输到磁盘。根据Xcode中的内存监视器,这会导致无限内存增长(最终导致内存警告和强制退出)——但使用分配工具分析内存使用情况表明内存使用情况是稳定的

我认为Xcode在这里是错误的,但为什么我的应用会被iOS扼杀呢

仪器显示了这一点——峰值是核心数据查询,其余是图像下载——峰值约为9.5MB,其余约为8.5MB

我也尝试过Heapshot分析——它显示了一点点的增长,但与Xcode报告的数量相差甚远

Xcode的内存监视器显示了这一点——每次迭代增加多MB

有没有办法让仪器显示Xcode看到的东西?还是有更好的工具来找出这些记忆的去向

谢谢

根据Xcode中的内存监视器,这会导致无限内存增长(最终导致内存警告和强制退出)——但使用分配工具分析内存使用情况表明内存使用情况是稳定的

相信仪器和分配信息,而不是Xcode中的内存监视器。内存监视器图形完全不相关。别理它

这并不是因为Xcode中的内存监视器无用或错误。这是因为调试版本的内存管理与发布版本的内存管理完全不同(Instruments使用发布版本)。在Swift中尤其如此(您不说是否正在使用Swift)


仅在设备上和发布版本中观察内存使用情况。否则,您将完全被误导。

当您通过profiler运行应用程序时,我相信它默认为发布版本。我想知道当您通过Xcode运行它时,是否正在构建调试版本。检查您的方案并确保两者构建的版本相同。在方案编辑器中,“运行”和“配置文件”都设置为调试。除非有别的地方可以设置?不,那正是我想的地方。看到概要文件的发布版本是很常见的(结果是看到与调试版本不同的行为)。当然,我假设在仪器中,在“记录选项”选项卡中分配工具的“记录类型”设置下,您正在记录所有类型?非常非常好奇。一个海森堡。最后一个想法是:我遇到过令人烦恼的情况,仪器莫名其妙地分析了一个旧版本的应用程序。我建议你不仅要做一个干净的构建,还要在重建之前从设备/模拟器中删除应用程序。我尝试过删除应用程序,但没有成功。还尝试将构建类型更改为在用于AFNetworking等的Cocoapods方案中进行调试,并再次进行分析,但行为仍然相同。奇怪的看起来确实如此。我们让应用程序在一个发布版本中运行了几千次有问题的代码迭代,没有任何问题。但是,将概要方案设置为“debug”会导致对发布版本进行概要分析,这似乎仍然很奇怪。