2011-01-10 2 views
3

У меня проблемы с управлением памятью UIImage.
(iphone) my app gets memory warning when instruments shows "all allocations" only 7mb?(iphone) Проблема управления памятью UIImage

По существу, я создаю/уничтожаю UIImage много раз.
Даже если я использую потребление памяти в то же время, используя локальный NSAutoreleasePool, устройство iphone/ipad продолжает жаловаться на использование памяти.

Я думаю, я должен выделить UIImage для конкретного буфера памяти (или пула буфера), который я могу обозначить.
Возможно ли это?

Или любое другое предложение о том, как создавать/уничтожать UIImages много раз, не расстраивая iOS, было бы очень признательно.

спасибо.

ответ

10

Это не очень известный факт, но приборы не учитывают размер UIImages в выделенной памяти. Вы можете пропустить 100Mb UIImages, и выделенная память не расскажет историю. То, что говорит история, - это количество живых экземпляров UIImage в данный момент.

В Выделение инструмент, используя верхнюю правую область поиска, ищите «Изображение». Затем найдите столбец с надписью #linving в UIImage. Это число - количество объектов UIImage. Это лучший инструмент для выяснения того, куда идут ваши UIImages. Если в какой-то момент у вас больше объектов, чем вы ожидаете, а thease UImages не уйдут, у вас будет утечка UIImage в ваших руках. Утечка UIImage быстро закроет ваше приложение.

+0

wow хорошая информация, но, к сожалению, My #living UIImage не перечитывает мое ожидание. :(любое другое предложение?, и все остальные, в том числе #CGImage, не колеблются больше, чем я думаю (макс. 6+) .. Возможно, 6+ = 6 мг, а базовая линия 10 мг = 16 Мг вызвала предупреждение. – eugene

+0

У меня свежий чистый ipad с менее чем на 4.0 iOS (без возможности использования фонового приложения). Несмотря на то, что люди сказали, что 16MG достаточно для генерации предупреждения, 16-мегагерц покажется мне слишком низким. Мне нужно убедиться, что это не проблема фрагментации памяти путем снижения базовой линии использование памяти немного больше. – eugene

+0

Предупреждения не обязательно являются поводом для беспокойства - они могут и достаточно регулярно воспроизводятся собственными приложениями Apple (в частности, приложение Maps на устройствах отображения сетчатки). Это то, что ваше приложение выполняет в ответ на предупреждение о сохранении памяти это важно, а не то, запускается ли один из них. – lxt

2

CGImage не колеблется больше, чем я думаю (не более 6+) .. ммм возможно 6+ = 6mg и базовый 10мг = 16мг срабатывает предупреждение

CGImages не autoreleased, вы должны позвонить CGImageRelease(image);

Смежные вопросы