Соответствующая ссылка, говорящая об ограничениях памяти приложения в iOS

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

  1. Я реализовал строки кода для освобождения памяти в предупреждении о получении памяти.
  2. Я также убедился, что NO LEAKS во всем приложении.
  3. Я узнал, что приложению требуется не менее 6 МБ памяти.

Вот общий поток приложения.

войти -> 1-й список -> 2-й список -> 3-й список -> 4-карта и список -> 5.Карта и список

Краткое описание каждого экрана.

  1. вход в систему — простой экран с именем пользователя-пароль, выполнение вызова веб-службы и аутентификация пользователя
  2. в зависимости от результата аутентификации он извлечет еще несколько данных и перечислит их на экране просмотра 1-го списка.
  3. на основе выбора из 1-го списка приложение загрузит список во 2-м списке
  4. на основе выбора из 2-го списка приложение загрузит список в представлении 3-го списка
  5. на основе выбора из 3-го списка приложение загрузит список, а карта будет иметь соответствующие контакты.
  6. на основе аннотации с карты приложение будет переходить к другим картам и другим булавкам.

Здесь приложение получает предупреждения о памяти на 6-м экране. Я обеспечил все стандарты кодирования и всю важность всех объектов.

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

Теперь дело в том, что приложение тестируется на iPad-1 с iOS 4.1, и все приложения принудительно закрываются перед началом тестирования приложения. ХОТЯ, приложение получает предупреждения при использовании всего 5,5 МБ.

Я пытался убедить своих менеджеров проектов в том, что этот объем памяти слишком высок, и они спрашивают меня - должна ли быть какая-то опция для установки ПАМЯТИ. Насколько гладко работают такие игры и приложения с высокой графикой? Я не могу найти соответствующий документ от Apple с указанием LIMIT. У меня нет на них ответа.

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


person Sagar R. Kothari    schedule 08.07.2012    source источник
comment
5,5 МБ кажутся слишком маленькими для срабатывания сторожевого таймера. Но есть надежда! Есть видео WWDC 2012, которое, я думаю, вам стоит просмотреть. Он показывает, как проверить, не происходит ли утечка, забрасывание или излишнее кэширование памяти. Это видео Session 242 — iOS App Performance: Memory, которое можно найти на сайте developer.apple.com. Он также проведет вас через шаги, которые необходимо предпринять, чтобы отследить вашу проблему. Я действительно рекомендую это - просто чтобы убедиться, что вы охватили все свои базы.   -  person Robotic Cat    schedule 09.07.2012
comment
Кстати, на WWDC 2012 (возможно, в том самом видео, о котором я упоминал выше) Apple заявила, что существует жесткое ограничение памяти в 650 МБ для любого приложения на iPad 3. Никакое другое устройство не имеет жесткого ограничения.   -  person Robotic Cat    schedule 09.07.2012
comment
Как сказал @RoboticCat выше, существует жесткое ограничение в 650 МБ, это относится ко всем устройствам, но, поскольку только iPad имеет более 500 МБ кэш-памяти, он в настоящее время единственный. Ожидайте, что 650 МБ будут применяться и к будущим iPhone (надеюсь, что новый iPhone будет иметь больше памяти!)   -  person hypercrypt    schedule 09.07.2012


Ответы (2)


Я сомневаюсь, что вы найдете какое-либо положительное утверждение об ограничениях памяти для приложения под iOS в документах Apple.

Но если вы погуглите «доступная память приложения ios», вы найдете много информации; например, это S.O. нить.

По моему опыту, мои приложения могут выдерживать «пиковое» использование памяти около 20 МБ (в зависимости от состояния устройства), но затем использование памяти должно быстро снизиться до порога в 10 МБ, чтобы приложение не было убито (я бы сказал, что 6 -8MB - более точная цифра). Иногда приложение может быть закрыто только потому, что пик не может быть «отменен» достаточно быстро.

Одна часть информации, которая может быть полезна вашим менеджерам, — это выходные данные инструмента «Монитор памяти» в «Инструментах», в частности, «свободная физическая память». Если вы используете его, вы неизменно увидите, что ваше приложение будет уничтожено, когда «свободная физическая память» опустится ниже заданного предела (согласно выходным данным Instruments), приближаясь к нулевой оставшейся памяти.

Теперь, достигнут ли этот предел из-за того, что вы выделили некоторую память (о чем сообщают инструменты Allocations или Leaks) или из-за других факторов (фреймворк, загруженный в память? что-то в ядре iOS или что не отслеживается инструментами?) вы не могу знать. Но вы наверняка можете проследить, как свободная физическая память в устройстве меняется со временем при использовании вашего приложения.

Надеюсь это поможет.

person sergio    schedule 08.07.2012

Общая память iPad первого поколения составляет 256 МБ. Конечно, некоторые из них будут использоваться самой операционной системой.

Очень консервативно предполагать, что для вашего приложения будет доступно не менее 64 МБ. Так что 6 МБ звучит для меня довольно минимально. Ваше приложение должно что-то делать, что приводит к выделению большего объема памяти.

Там определенно нет опции «Я игра, позволь мне использовать больше памяти». Всем приложениям разрешено использовать столько памяти, сколько они могут (хотя всегда рекомендуется минимизировать использование памяти). Если память заканчивается, приложение получает уведомление, а если память исчерпана, приложение переднего плана завершается.

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

person Jon-Eric    schedule 08.07.2012
comment
Ну, это еще не говорит о точном ответе. Как я уже сказал, я убедился, что приложение использует только 6 МБ, хотя оно получает предупреждения о памяти. Снимки с приборов могу выложить завтра. Никакие другие приложения не работают даже в фоновом режиме. Я пробовал два разных iPad. - person Sagar R. Kothari; 08.07.2012
comment
@Spark, в журнале сбоев, который создается при завершении работы вашего приложения, сколько резидентных страниц, по его словам, использовало ваше приложение? - person Jon-Eric; 08.07.2012
comment
Приложение не вылетает. Приложение просто получает предупреждения и очищает все данные. Но данные должны быть. все другие приложения принудительно закрываются перед началом тестирования приложения. - person Sagar R. Kothari; 08.07.2012
comment
@Spark, если приложение не завершается из-за нехватки памяти (что создает журнал сбоев), то в чем проблема? Вы можете делать все, что хотите, когда получаете предупреждение о нехватке памяти (включая ничего). - person Jon-Eric; 09.07.2012