2013-02-12 2 views
6

У меня проблема с моим приложением. Я тестировал до сих пор в основном на своем iPad 3 с периодическими проверками на своем iPad 1, чтобы убедиться, что все в порядке.Разница между потреблением виртуальной памяти и реальной памятью с монитором памяти на iOS

Я играю анимацию UIImageView в своем приложении, и она прекращает работу только с сообщением «Принимая во внимание память», прежде чем она уйдет.

Я использую инструмент Object Allocations в инструментах, но в соответствии с этим использование моей памяти является низким. Итак, после небольшого исследования я наткнулся на этот пост г-на Ларсона: https://stackoverflow.com/a/5627221/329900

Теперь вместо этого я использую инструмент монитора памяти. Однако я не понимаю, почему я ухожу. 1-й ген. iPad имеет 256 МБ оперативной памяти. Теперь я знаю, что не могу использовать все это ... некоторые говорят, что вы не должны использовать более 100 МБ.

Это настоящая память, или виртуальная память ... или, может быть, какая-то комбинация? Моя реальная память постоянно находится между 20 - 25 МБ, но виртуальная составляет около 190 - 205 МБ, когда она падает.

Вот скриншот: enter image description here

Кто-нибудь может пролить некоторый свет на это?

+0

Я предлагаю запустить приложение с включенным инструментом Track Tracker. VM Tracker показывает использование графической памяти (виртуальной памяти). Скорее всего, ваша анимация UIImageView загружает слишком много изображений в памяти для выполнения анимации. Было бы целесообразнее использовать более эффективный метод анимации. –

+0

Итак, какие у меня варианты для более эффективной анимационной техники? Кроме того, показывает ли мне VM Tracker, если я загружаю сразу несколько изображений? – daveMac

ответ

6

WWDC (Session 242) видео путем поиска для IOS App Производительность: Память в WWDC 2012 Session Videos страницы даст вам лучше понять разницу между VM и реальной памяти.

Но вот краткий обзор: Указатель Диапазон = 2^32 = 4 ГБ. Это больше, чем физическая память на любом устройстве (отправлено яблоко). Это делается путем взятия всего доступного пространства и деления его на 4kb кусков. Не вся память, к которой ваше приложение может получить доступ, находится в физической памяти одновременно. Эти 4kb куски являются страницами вызовов. Ваши распределения распределяются из более крупных блоков виртуальной памяти. Затем эти объекты виртуальной памяти отображаются в физической памяти.

+4

+1. Это потрясающее видео, которое должно быть необходимо для просмотра перед использованием инструментов памяти. –

+0

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

+0

Не существует ли более безопасный или лучший способ определить, загружается ли приложение слишком много раз, чем просто, чтобы убедиться, что он не уходит? – daveMac

Смежные вопросы