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


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

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

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

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

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

3   51   2011-07-10 18:08:22

3 ответа:

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

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

чтобы ответить на how, используйте инструмент распределения для измерения использования памяти. Столбец Live Bytes в категории все выделения указывает объем памяти, который в настоящее время использует приложение. Анализ heapshot инструмента распределения измеряет рост памяти в вашем приложении. Используйте меню в левой части панели перехода, чтобы сделать heapshot анализ.

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

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

чтобы обратиться к некоторым комментариям в ответе Марка:

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

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

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

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

пожалуйста, смотрите WWDC 2012 Session 242 iOS App Performance: Memory, чтобы получить информацию от Apple.