Предупреждения Памяти iPhone OS. Что Означают Разные уровни?

Относительно черной магии руководящей памяти на устройствах iPhone OS: что делает разные уровни памяти, предупреждающей средний. Уровень 1? Уровень 2? Набор переходит в 11?

Контекст: После обширного периода стресс-тестирования памяти - включая выполнение моего приложения для iPad с проигрыванием приложения для аудиоплеера iPod, я склонен проигнорировать случайные все же нечастые предупреждения памяти, которые я получаю. Мое приложение никогда не отказывает. Когда-либо. Мое приложение является свободной утечкой. И, ну, в общем, предупреждения мемов просто, кажется, не имеют значения.

Спасибо,
Doug

85
задан dugla 26 May 2010 в 17:16
поделиться

2 ответа

В основном предупреждения означают, что на устройстве заканчивается память, и что «Если бы вы могли освободить некоторую память, которую вы не используете активно, это будет набухать! ». Если у вас жесткое управление памятью и у вас нет объектов, которые можно было бы практически отбросить, просто передайте сообщение и игнорируйте его.

98
ответ дан 24 November 2019 в 08:08
поделиться

SpringBoard регистрирует предупреждения об уровне памяти. Как разработчику приложения вам не нужно об этом заботиться. Достаточно просто ответить на - {application} didReceiveMemoryWarning .


Существует 4 уровня предупреждений (от 0 до 3). Они устанавливаются наблюдателем за памятью ядра и могут быть получены с помощью закрытой функции OSMemoryNotificationCurrentLevel () .

typedef enum {
    OSMemoryNotificationLevelAny      = -1,
    OSMemoryNotificationLevelNormal   =  0,
    OSMemoryNotificationLevelWarning  =  1,
    OSMemoryNotificationLevelUrgent   =  2,
    OSMemoryNotificationLevelCritical =  3
} OSMemoryNotificationLevel;

Как срабатывают уровни, не задокументировано. SpringBoard настроен на выполнение следующих действий на каждом уровне памяти:

  1. Предупреждение (ненормально) - перезапуск или задержка автоматического перезапуска второстепенных фоновых приложений, например. Почта.
  2. Срочно - Закройте все фоновые приложения, например Safari и iPod.
  3. Критично и не только - ядро ​​возьмет на себя управление, возможно, убив SpringBoard или даже перезагрузившись.

Удаление активного приложения (jetsam) не обрабатывается SpringBoard, а запускается .

193
ответ дан 24 November 2019 в 08:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: