управление памятью iPhone

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

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

Кто-нибудь знает, что я могу сделать, чтобы решить эту проблему, или рекомендовать способ разобраться в ней?


person Olshansk    schedule 21.07.2011    source источник
comment
ЛЮБАЯ утечка имеет значение. Еле не режет, не должно быть.   -  person MarkPowell    schedule 21.07.2011
comment
Согласитесь с @MarkPowell. Утечек быть не должно на протяжении всего срока работы программы, проверена вся функциональность. Изолируйте каждую утечку до раздела кода и устраните ее с помощью зубчатой ​​расчески, если необходимо, устраните ее, промойте и повторите. После того, как вы заткнули все утечки, вы можете повторно оценить их, чтобы увидеть, есть ли другие проблемы, которые необходимо устранить, но вы должны начать с утечек.   -  person Kongress    schedule 21.07.2011


Ответы (1)


Даже если вы выпускаете ненужные предметы, это не имеет значения. Вы, вероятно, по какой-то причине выделяете слишком много вещей и храните их. Вы можете попробовать это проверить:

http://macdevelopertips.com/objective-c/objective-c-memory-management.html

http://akosma.com/2009/01/28/10-iphone-memory-management-tips/

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

Изменить: я должен согласиться с Марком и Kongress, каждая утечка имеет значение для жизни вашего приложения.

person Rui Peres    schedule 21.07.2011
comment
Так что мне удалось немного улучшить память (хотя и не до конца). Я обнаружил, что две основные проблемы, с которыми я столкнулся, заключались в том, что я не выпускал указатели, у которых было свойство сохранения, и что я везде использовал UIImage imageNamed (и у меня есть сотни изображений), который кэшировал все изображения. - person Olshansk; 29.07.2011
comment
Если вам нужна дополнительная помощь, просто дайте мне знать Ольшанск. - person Rui Peres; 29.07.2011