2009-11-06 2 views
1

Когда я запускаю свое приложение в симуляторе с помощью инструмента Leaks, он использует около 2,5 МБ памяти. Когда я запускаю его на iPhone, он навсегда запускается, медленно поднимается до ~ 34 мб памяти, а затем падает. Однако, когда я запускаю его на iPhone без утечек, он запускается быстро и работает нормально. Почему это?Утечки, показывающие расширенное использование памяти, когда на iPhone против Simulator

ответ

0

Аварийные сообщения, вероятно, связаны с утечками памяти, которые у вас есть в приложении, а на устройстве заканчивается память. Не видя никакого кода, невозможно сказать. Here учебник о том, как использовать инструменты

«принимает навсегда для запуска» и и работает медленно из-за утечки системы мониторинга опроса устройства каждые 10 секунд для получения информации

EDIT: Это, вероятно, из-за сохраняя слишком много объектов в памяти в определенное время. Проверка инструментов и выделение объектов. Просто потому, что у вас нет утечек, это не значит, что вы не можете иссякнуть.

+1

Вряд ли - приложение разработчика значительно увеличивается при работе под инструментами. Это указывает на то, что код отладки находится в игре, что вызывает рост. Скорее всего, причиной является обнаружение зомби. – bbum

+0

Когда я запускаю утечки с помощью симулятора, утечек памяти нет. Было несколько, но я их исправил – rickharrison

+0

Я отредактировал свой ответ – coneybeare

1

У вас обнаружено обнаружение зомби?

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


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

+0

Зомби заставят приложение расти во всех средах, а не просто отлаживать – coneybeare

+0

Как я могу узнать, включен ли обнаружение зомби? – rickharrison

+0

Нажмите на исполняемый файл в xcode. Посмотрите на аргументы. Если он говорит NSZombieEnabled и имеет галочку, то он находится на – coneybeare