2010-12-29 3 views
7

У меня графическое приложение для iPad, в котором есть интерфейс UIWebView. Используя симулятор (iOS 4.2.1), я вижу, что Real Mem увеличивается довольно много, когда я просматриваю. Чем больше я просматриваю, тем больше оперативной памяти он использует. Когда я закрываю UIWebView и освобождаю его, некоторая памяти, которую она использует, освобождается, но не все. Это раздражает. Хорошо, возможно, это потому, что он не освобождается сразу. Хорошо. Но тогда я ожидал бы, что система сделает некоторую очистку, когда появится предупреждение о памяти. Однако, если я просматриваю, а затем закройте UIWebView (и отпустите его), а затем вызовите предупреждение памяти в симуляторе, Real Mem не изменится! WTF?Почему UIWebView не освобождает всю память?

Так почему же это? Почему UIWebView не лучше восстанавливает память в системе? И почему он не реагирует на предупреждения о памяти? Я что-то упускаю?

+2

Монитор активности бесполезен для целей отладки. Используйте инструмент «Выделение». Обратите внимание, что симулятор может вести себя значительно по-другому, чем приложение на устройстве. – bbum

+0

Да, интересно. Играя с Allocations (смешно, как я этого раньше не замечал, сосредоточившись на устранении утечек в прошлом), я могу получить общий байт до 256 МБ всего за несколько минут использования. Живые байты - 4-7 МБ. Являются ли общие байты кумулятивными? Мне нужно найти быстрый учебник ... – theory

+0

Ой, нашел его в TFM: «В целом: общее количество объектов или блоков памяти этого типа, которые были выделены, включая те, которые были выпущены». Потрясающие! В конце концов, мое приложение не использует много памяти! – theory

ответ

6

Добавление в ответ, так как он, казалось, помогли:

Activity Monitor бесполезна для целей отладки. Использовать ассигнования Инструмент. Обратите внимание, что симулятор может вести себя значительно по-другому , чем приложение на устройстве.

С удовольствием помогли. Я часто нахожу, что включение «Только отслеживать живые выделения» весьма полезно для просмотра текущего рабочего набора моих приложений. Живое и мертвое отслеживание тоже полезно.

О, и heapshot analysis (article on my weblog) может быть чрезвычайно эффективным при отслеживании утечек памяти.

Утечки? Никогда не используйте его. Анализ heapshot полностью заменяет его для меня. Ваш пробег может отличаться.

+0

Спасибо, пожалуйста, бубм! – theory