сбой iPhone из памяти WEIRD - PullRequest
       20

сбой iPhone из памяти WEIRD

2 голосов
/ 18 марта 2009

Мое приложение зависает примерно через 20 минут со статусом 101 (мне кажется, не хватает памяти)

Отладка с использованием инструментов - ObjectAlloc и Leaks не дают мне никаких подсказок. График ObjectAlloc остается на хорошем постоянном уровне около 1 миллиона байтов (1 МБ), так же как и Net # от распределений. Я избавился от всех утечек.

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

Кто-нибудь может направить меня в сторону другого инструмента или другого пути исследования?

Ответы [ 5 ]

3 голосов
/ 18 марта 2009

Исправьте все, что найдет Кланг. Статический анализ LLVM Clang

1 голос
/ 19 марта 2009

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

Вместо этого используйте Object Alloc с Activity Monitor. Убедитесь, что вы используете параметры «Свободная физическая память» и «Используемая физическая память» в мониторе активности. Это точно скажет вам, сколько памяти использует ваше приложение.

1 голос
/ 19 марта 2009

Помните, что объекты, выделенные системой (включая такие вещи, как изображения и звуки), не отслеживаются в инструментах (хотя, конечно, подсчет верхнего уровня сохраняется). Таким образом, вполне возможно, что вы загружаете изображения, скажем, что не сильно повлияет на использование вашей памяти, как шоу, но может истощить значительную часть реальной памяти!

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

Удачи!

0 голосов
/ 18 марта 2009

Код ошибки 101 означает, что iPhone OS принудительно завершает работу вашего приложения. Если вы используете UIImageViews в своем приложении, не забудьте управлять памятью на них. Я обнаружил, что, как только мое приложение становится больше 10/12 МБ, iPhone прерывает его.

Если вы не используете какие-либо виды изображений (или большие изображения), то ваш внутренний код занимает слишком много места.

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

Запустите ваше приложение в Инструментах (Выполнить -> Начать с Performamce Tool -> Утечки), чтобы увидеть, где выделяется ваша память.

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

0 голосов
/ 18 марта 2009

Что вы подразумеваете под «хорошим уровнем». Со временем вообще не поднимается? Сколько всего памяти - это может быть просто телефон нуждается в памяти для какого-то другого приложения, а у вас слишком большой размер, чтобы не спать.

...