Как настроить использование памяти и производительность с помощью инструментов? - PullRequest
52 голосов
/ 10 июля 2011

Из всех шаблонов трассировки инструментов я люблю использовать:

  • Зомби, чтобы определить, где объект перевыпускается, отлично подходит для отладки EXEC_BAD_ACCESS ошибок.
  • Утечки для обнаружения утечек памяти.
  • Базовая анимация с цветными смешанными слоями для определения частоты кадров и полупрозрачных подпредставлений, отлично подходит для сглаживания UITableView прокрутки.

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

  1. Почему я должен профилировать использование памяти и производительность? Мое приложение работает нормально.
  2. Как мне это сделать?

Я использовал «Распределение» и вижу, что мое приложение для iPhone запускается с общим объемом выделенной памяти 1 МБ и увеличивается до 5 МБ после обычного использования. Что такое слишком большое использование памяти на iPhone? IPad? Mac

Ответы [ 3 ]

76 голосов
/ 11 июля 2011

Чтобы ответить на все вопросы, профилирование использования памяти особенно важно для приложений iOS, потому что у iPhone и iPad гораздо меньше оперативной памяти, чем у Mac. IPhone 4 имеет 512 МБ оперативной памяти, но более ранние версии имели 256 или 128 МБ. Фактор оперативной памяти, которую использует ОС, и многозадачность, и у вашего приложения не так много оперативной памяти, поэтому важно знать, сколько памяти использует ваше приложение.

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

Чтобы ответить на вопрос, используйте инструмент Allocations для измерения использования памяти. Столбец «Живые байты» в категории «Все выделения» показывает объем памяти, используемый вашим приложением в данный момент. Анализ кучи инструмента Allocations измеряет рост памяти в вашем приложении. Используйте меню в левой части панели перехода, чтобы выполнить анализ снимков кучи.

Инструмент Time Profiler профилирует ваше приложение для производительности. Сложная часть использования инструмента Time Profiler - интерпретация результатов. Инструмент Time Profiler не скажет вам, что ваше приложение тратит 75% своего времени в функции X. Вам нужно копаться в данных, чтобы найти медленные места в вашем коде.

Относительно приемлемого использования памяти, это зависит от устройств, которые вы хотите поддерживать, и приложения. Было бы хорошо, например, приложение Xcode, использующее 100 МБ ОЗУ, но такое приложение, как TextEdit, использующее 100 МБ для одностраничного документа, было бы проблемой. 5 МБ не должно быть проблемой для приложения для iOS.

7 голосов
/ 17 июля 2012

Чтобы ответить на некоторые комментарии в ответе Марка:

Распределение живых байтов не включает память текстур OpenGL, которая используется CALayer / UIViews.Это является источником разногласий с монитором памяти.

См. Ответ на этот вопрос здесь: Понимание потребления памяти на iPhone

3 голосов
/ 22 августа 2013

Память, реально загруженная в физическую память устройства, - Resident Memory в VM Tracker Instrument.

Allocation Instrument отмечает только память, созданную malloc/[NSObject alloc], и некоторый буфер структуры, например, растровое изображение распакованного изображения не включено в Allocation Instrument, но всегда занимает большую часть вашей памяти.

Пожалуйста, следите за сессией WWDC 2012. 242 Производительность приложения для iOS: память для получения информации от Apple.

...