IPhone OS восстанавливает память пользовательского пространства при выходе? - PullRequest
3 голосов
/ 24 июня 2009

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

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

Меня больше беспокоит утечка кода для выхода из всей системы. Когда я полностью выхожу из своего приложения, возникает ли проблема, что что-то не было освобождено, или ОС iphone автоматически восстанавливает все пользовательские записи в этот момент?

Эта проблема неясна для меня после прочтения довольно большого количества документации, и, не зная ничего другого, я предполагаю, что она должна работать как другие ОС в этом отношении и просто забрать все пространство пользователя. Если это так, разве я не буду хорошо убирать регулярные утечки, чтобы мое приложение могло работать в течение любого промежутка времени с ограниченной памятью, тогда не стоит так сильно беспокоиться, что все освободится при выходе?

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

Ответы [ 2 ]

3 голосов
/ 24 июня 2009

Да, при завершении вашей программы будет освобожден каждый бит памяти, удерживаемый ею. Все остальное является ошибкой ОС, и вряд ли вы обнаружите это.

РЕДАКТИРОВАТЬ: Бьюсь об заклад, вы спрашиваете об этом, потому что документация говорит "iPhone не поддерживает сборку мусора". Это утверждение, однако, не относится к освобождению памяти, когда программа заканчивается. Это говорит только о том, как вы должны справиться с освобождением собственной памяти во время работы вашей программы.

0 голосов
/ 24 июня 2009

iPhone должен использовать виртуальную память, поэтому (теоретически в любом случае) ОС будет очищать все, когда выходит утечка приложения.

...