2009-08-26 5 views
5

Если приложение создает много утечек памяти, являются ли они «просто» проблемой в приложении или они также находятся в ОЗУ после окончания приложения? Так ли iPhone OS освобождает память, выделенную для изолированного приложения?Утечка памяти iPhone

Спасибо

+0

Имеет ли это значение? Просто обязательно используйте правильное управление памятью в своем приложении. – EBGreen

+1

Имейте в виду, что некоторые объекты яблока имеют утечку памяти, например UIWebview – Rodrigo

ответ

16

Утечки памяти блоки памяти, выделенной ОС для вашей программы, чтобы использовать в то время как он работает, но не правильно возвращается как не используется, когда программа закончит с ними. Итак, эта память «потеряна». Ваша программа не использует его, но система пока не знает, что она бесплатна для другого использования.

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

Однако утечки памяти являются значительной ошибкой. На устройстве с малой памятью, например iPhone, чем меньше памяти вы потребляете, тем лучше, вы не хотите, чтобы вы теряли память при запуске. Если устройство работает на низком уровне памяти, ваше приложение может неожиданно прекратить работу или сбой.

+0

. Это, как правило, правильный ответ на утечки памяти, но действительно ли это iPhone? – EBGreen

+0

Да, насколько я знаю, управление памятью в iPhone такое же, как и приложения для какао на OS X, без поддержки сбора мусора. – cms

+0

Я знал, что не было сбора мусора. Я просто не знал, если вы говорите из личного опыта с iPhone OS или общим опытом. Я подозреваю, что ты прав, я просто хотел быть ясным. – EBGreen

1

Утечки памяти возникают, когда вы выделяете какой-либо объект и пропускаете его, чтобы освобождать эти объекты во время работы приложения, поэтому проанализируйте в xcode, который поможет в проверке утечек памяти, а режим профиля профиля в xcode поможет проверить возможные утечки в приложении ,

и использовать NSAutoReleasePool освободить объекты autorelease, которые будут созданы, когда вы просто присвоить объекты wothout выделения

надеюсь, что это помогает.

1

Утечки памяти - это проблема с приложением, но могут иметь побочные эффекты для общей доступной оперативной памяти.

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

Так держать утечки памяти до минимума ;-)

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

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

Утечки плохие, используйте статический анализатор CLang в сборке и анализе.

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