Большой объем памяти CFNetwork при загрузке изображений

Во-первых, я не совсем уверен, является ли это проблемой AFNetworking или CFNetwork.

Я использую AFNetworking в приложении для iOS, которое загружает тысячи изображений. Это реализуется с помощью NSMutableURLRequest, AFHTTPRequestOperation (с AFHTTPResponseSerializer), NSOperationQueue (для параметра maxConcurrentOperationCount в NSOperationQueue установлено значение 8, кстати).

что я вижу, так это то, что пока эти изображения загружаются с сервера, объем памяти моего приложения значительно увеличивается. Используя распределения в инструментах (XCode5), похоже, что большая часть памяти уходит в CFData в HTTPProtocol::bytesAvailable в CFNetwork.

введите здесь описание изображения

Хотя я ничего не знаю о CFNetwork, я просто предполагаю, что пока изображения загружаются, некоторые CFData не освобождаются, что приводит к временному накоплению большого количества памяти.

Просто для ясности, эта память в конечном итоге освобождается, где-то, каким-то образом, поскольку я вижу, что объем памяти в инструментах через некоторое время уменьшается, но меня беспокоит то, что происходит во время загрузки изображений.

введите здесь описание изображения

Странно то, что с maxConcurrentOperationCount=8 можно подумать, что одновременно загружается не более 8 изображений...

Является ли это проблемой, с которой сталкивались другие, и если да, то как ее исправить? можно ли настроить AFNetworking таким образом, чтобы этого не происходило?

Спасибо.


person Rene Limberger    schedule 22.10.2013    source источник


Ответы (1)


AFNetworking имеет очередь операций, и вы можете установить максимальное количество одновременных операций следующим образом:

[[requestOperationManager operationQueue] setMaxConcurrentOperationCount:5];

person JoeyJAL    schedule 14.07.2014