Я пытаюсь отследить какое-то специфическое поведение памяти в моем приложении Cocoa для ПК. Мое приложение выполняет большую часть обработки изображений с помощью NSImage и загружает эти изображения на веб-сайт по HTTP с использованием NSURLConnection.
После загрузки нескольких сотен изображений (некоторые очень большие) при запуске Instrument я не получаю утечек. Я также пробежал через MallocDebug и не получил никаких утечек. Когда я копаюсь в распределении объектов с помощью Инструмента, я получаю вывод, подобный этому:
GeneralBlock-9437184, Net Bytes 9437184, # Net 1
GeneralBlock-192512, Net Bytes 2695168, # Net 14
и т. Д., Для меньших размеров. Когда я смотрю на них подробно, они помечены как принадлежащие «Foundation» и созданные с помощью NSConcreteMutableData initWithCapacity. Во время загрузки HTTP я создаю тело сообщения, используя NSMutableData, поэтому я предполагаю, что это буферы, которые Cocoa для меня кэширует, когда я создаю объекты NSMutableData.
Есть ли способ заставить Какао освободить их? Я уверен на 90%, что выпускаю правильно (и Instruments и MallocDebug, кажется, подтверждают это), но я думаю, что Cocoa хранит их по причинам, потому что я выделяю так много буферов MSMutableData.