Подтвердить что ты не робот

Как профилировать использование памяти и производительность с помощью инструментов?

Из всех шаблонов Trace Tools я обожаю использовать:

  • Зомби, чтобы обнаружить, где объект переизлучается, отлично подходит для отладки EXEC_BAD_ACCESS.
  • Утечки для обнаружения утечек памяти.
  • Core Animation w Color Blended Layers для определения частоты кадров и полупрозрачных подзонов, отлично подходит для сглаживания прокрутки UITableView.

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

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

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

4b9b3361

Ответ 1

Чтобы ответить на вопрос, использование профилирующей памяти особенно важно для приложений для 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.

Ответ 2

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

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

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

Ответ 3

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

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

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