Максимальное (практическое) использование памяти на iPod Touch 4G, iOS 5 - PullRequest
3 голосов
/ 27 февраля 2012

У нас есть 3D-приложение с интенсивным объемом памяти, которое в первую очередь предназначено для iPad 2 и iPhone 4S, но работает и на iPod Touch 4G и iPhone 3GS. Мы обнаружили, что меньший объем памяти на iPod Touch 4G в сочетании с дисплеем Retina делает эту платформу более подверженной ошибкам нехватки памяти. iOS5 также, похоже, несколько снизила доступную память.

Нам относительно легко снизить разрешение 3D-моделей на основе используемой платформы, но мы должны установить это разрешение перед загрузкой, и, таким образом, мы не можем эффективно снизить его динамически на основании предупреждений о нехватке памяти от O / S

Мы настроили использование памяти методом проб и ошибок, но обнаружили, что устройства, которые не были перезагружены в течение длительного времени (например, месяцы), имеют гораздо меньше полезной памяти, чем устройства, которые были перезагружены относительно недавно. (Даже если вы убьете все работающие приложения.)

Мне интересно, что другие разработчики приложений для iOS используют в качестве практического ограничения памяти для приложений iPod Touch 4G?

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

Принимая во внимание все предостережения, которые все предлагают, мое личное правило заключается в том, что в разумную погоду вы можете рассчитывать на следующее:

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

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

2 голосов
/ 11 июня 2013

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

вот ссылка: https://github.com/Split82/iOSMemoryBudgetTest

1 голос
/ 27 февраля 2012

Трудно дать фактическое число из-за всех внешних распределений, которые ОС делает от вашего имени в UIKit и OpenGL. Я пытаюсь сохранить свои собственные ассигнования около 30 МБ, с 50 МБ своего рода верхний предел. Я поднял его до 90 МБ, но на этом уровне меня сильно отбросили, так что, вероятно, это плохая идея, если задача, использующая всю эту память, не очень коротка.

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

Я добился большого успеха, сократив использование памяти за счет использования сопоставленных файлов вместо загрузки данных в ОЗУ, и вы можете попробовать сделать это, если у вас большие объемы данных.

Также следите за утечками представлений / элементов управления из UIKit, так как они занимают много памяти и могут привести к тому, что их выбросят в случайное время. У меня был некоторый код, который пропускал дочерние представления от нескольких контроллеров представления. В конечном счете, эти утечки могут уничтожить мое приложение, хотя использование памяти моим приложением напрямую не отражало проблему.

...