Утечки памяти iPhone - PullRequest
       6

Утечки памяти iPhone

5 голосов
/ 26 августа 2009

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

Спасибо

Ответы [ 3 ]

16 голосов
/ 26 августа 2009

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

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

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

1 голос
/ 04 апреля 2012

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

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

Так что минимизируйте утечки памяти; -)

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

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

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

1 голос
/ 01 апреля 2012

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

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

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

...