Что именно позади / внутри управления памятью iPhone? - PullRequest
4 голосов
/ 28 сентября 2011

Этот вопрос НЕ о сохранении / разблокировке объектов в управлении памятью iphone. Я достаточно хорошо понимаю процедуру, и в моем приложении нет утечек памяти.

Я выскакиваю вопрос, показанный в заголовке, когда я использую Activity Instruments для контроля общей активности памяти моего приложения.

Прибор всегда показывает, что объем «реальной памяти», который используется моим приложением, постоянно находится между 21 МБ и 30 МБ, и никогда не бывает выше. Я думаю, что эта сумма относительно невелика. Однако иногда мое приложение выдает предупреждение памяти уровня 1 или 2 (никогда не вылетает, и я ничего не делаю для этого предупреждения в своем коде).

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

Хотя мое приложение никогда не падает из-за проблем с памятью, это предупреждение (особенно предупреждение уровня 2) действительно раздражает меня и заставляет бояться сбоя, как только я опубликую его в будущем.

Любая помощь?

Спасибо

1 Ответ

4 голосов
/ 28 сентября 2011

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

Фактические подробности реализации при предупреждении о срабатывании памяти не важны, и на самом деле они будут значительно различаться.от устройства к устройству.IPhone 4 может иметь 512 МБ ОЗУ для игры, но 3GS будет иметь половину от этого.

Тем не менее, есть некоторые вещи, которые стоит знать о предупреждениях памяти:

  • Памятьпредупреждение срабатывает, когда общий объем доступной свободной памяти достигает 1013 *. Эти уровни равны недокументировано .Таким образом, вы не знаете, в чем разница между предупреждением уровня 1 и предупреждением уровня 2, за исключением того, что факт 2 хуже (более срочно), чем 1
  • Предупреждения памяти не зависят от приложения.Предупреждение о памяти доставляется всем приложениям, работающим в данный момент и не приостановленным.Таким образом, вы не можете нести прямую ответственность за его срабатывание.
  • При получении предупреждений о памяти система попытается освободить память от вашего имени

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

...