Хранение нескольких приложений в фоновом режиме в iPad вызывает проблемы с памятью? - PullRequest
0 голосов
/ 14 сентября 2011

Я занимаюсь разработкой приложения для iPad и понял, что мое приложение получает память даже при небольшой продолжительности использования.
Я зарегистрировался в Instruments и увидел, что приложение зависало при выделении памяти всего 6 МБ.
В фоновом режиме было открыто несколько приложений.
Когда все фоновые приложения были закрыты, казалось, что приложение работает нормально.
Так значит ли это, что несколько приложений в фоновом режиме вызывают проблемы с памятью?

Заранее спасибо:)

1 Ответ

2 голосов
/ 14 сентября 2011

Нет.В ситуациях с нехваткой памяти iOS убивает приложения, которые находятся в фоновом режиме, поэтому их наличие при запуске приложения само по себе не является проблемой.

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

Изменить, чтобы охватить вопросы в вашем комментарии:

Если я запускаю несколько приложений, почему приложения работают медленнее?

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

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

Или сбой происходит раньше при длительном использовании?

В приложениях, которые вылетали, есть ошибки.Это так просто.

И чем объясняются причудливые предупреждения о памяти для выделений размером до 6 МБ ???

Подумайте об этом: iOS не может отправить васпредупреждение о памяти после вся память была исчерпана.Уже слишком поздно.

Вместо этого он должен использовать эвристику.Обычно эвристика работает.Приложение переднего плана выпускает некоторые из своих кэшированных данных, возможно, один или несколько фоновых процессов убиты.Это позволяет процессу переднего плана продолжаться без сбоев.

Таким образом, все может пойти не так, если вы проигнорируете предупреждения.

Или эвристика может ошибиться.

Но либокстати это спорный вопросТак работает iOS.Вы не можете вручную убить другие процессы.Вы не можете предлагать пользователям перезагрузить свой телефон перед запуском вашего приложения (Apple, скорее всего, отклонит его).Все, что вы можете сделать, это соответствующим образом отреагировать на предупреждение о нехватке памяти, которое приходит после того, как вы выделили 6 МБ или 60 МБ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...