Профилирование памяти с помощью инструментов - PullRequest
4 голосов
/ 25 мая 2011

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

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

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

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

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

1 Ответ

3 голосов
/ 25 мая 2011

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

...