2013-10-22 50 views
0

首先,我不确定这是AFNetworking问题还是CFNetwork。CFNetwork在下载图像时占用大量内存

我正在使用AFNetworking在iOS应用程序下载数以千计的图像。这通过NSMutableURLRequest,AFHTTPRequestOperation(带有AFHTTPResponseSerializer),NSOperationQueue(NSOperationQueue上的maxConcurrentOperationCount被设置为8 btw)来实现。

我所看到的是,当这些图像从服务器上下载时,我的应用程序的内存占用量显着增加。在仪器中使用分配(XCode5),看起来很多内存都是CFNetwork中的HTTPProtocol :: bytesAvailable中的CFData。

enter image description here

虽然我不知道什么CFNetwork的,我只是猜测,而图像的下载,一些CFData没有被释放,这导致了大量内存的临时积累。

只是要清楚,这个内存最终会在某处以某种方式被释放,因为我在一段时间后看到内存占用会在乐器中下降,但是我担心的是当下载图像时会发生什么。

enter image description here

奇怪的事情是,随着maxConcurrentOperationCount = 8,你会认为不超过8个图像在任何一个时间下载...

这是其他人所遇到的问题如果是这样,如何解决它? AFNetworking可以以某种方式进行配置,以免发生这种情况?

谢谢。

回答

0

AFNetworking具有操作队列,你可以进行如下设置最大并发操作数:

[[requestOperationManager operationQueue] setMaxConcurrentOperationCount:5];