Профилирование памяти с помощью инструментов

#iphone #objective-c #ios #memory-management #memory-leaks

#iPhone #objective-c #iOS #управление памятью #утечки памяти

Вопрос:

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

После небольшой настройки я избавился от пары утечек, и теперь они не отображаются. Однако я заметил, что каждый раз, когда я нажимаю на какой-либо контроллер просмотра и возвращаю его обратно, объем памяти увеличивается, затем немного уменьшается, но не до уровня, предшествующего нажатию, например, отображение живых байтов

  • 1,8 МБ до запуска
  • 2,1 МБ после нажатия
  • 2,0 МБ после всплывающего
  • 2,1 МБ после второго нажатия

Забавно, что после повторного нажатия на него (или даже 10 раз) оно не увеличивается по сравнению с предыдущим значением, поэтому, хотя это выглядит как утечка, это, вероятно, какой-то кеш или что-то в этом роде. Сначала я подумал, что это что-то специфичное для моего кода, но затем я смог воспроизвести это практически с любым контроллером просмотра, независимо от того, насколько простым оказывается содержимое.

Есть ли разумное объяснение этому явлению или я просто делаю что-то совершенно неправильное во всех примерах, которые я построил?

Ответ №1:

Это происходит из-за пулов автоматического освобождения и памяти, которая должна быть освобождена для вас. Оно сохраняется столько, сколько необходимо. Когда вы добавляете больше ViewControllers в стек, создается больше автоматически выпущенных объектов. Некоторые из них будут выпущены раньше других, но это произойдет очень вовремя, так что колебания объема вашей памяти нормальны.