Что означает <необъект> в распределении «heapshots»? - PullRequest
26 голосов
/ 02 ноября 2010

Мне трудно исправить проблемы с памятью в моем приложении для iPad, но хорошо, что я узнал о «кучах» из-за этого. Плохо то, что я до сих пор не могу понять, что означает некоторая информация, предоставленная мне. alt text

Итак, что же это за не-объекты, которые все еще живы и занимают большую часть памяти, описанной в Росте кучи? Можно ли от них избавиться? Похоже, что большинство из них связаны с различными операциями рисования, CALayer, контекстом и т. Д. (Категория: «Malloc» или «Realloc»). Я могу предоставить более подробную информацию, если это необходимо.

1 Ответ

20 голосов
/ 02 ноября 2010

Это означает, что блок памяти был выделен не для объекта (например, структура чистого c). Обычно они присваиваются кодом системной платформы, поэтому есть некоторые другие объекты, которые просочились. Например. если вы забыли выпустить UIView, то его слой тоже не будет освобожден.

Вы можете открыть панель «Расширенные сведения» (см. Меню «Вид») и проанализировать стек вызовов. Помните, что один release, который вы забыли, может привести к большому количеству утечек памяти, поэтому попробуйте исправить самые простые утечки и затем проверить, исчезают ли другие утечки.

Еще один трюк. Вы можете отключить функциональный блок вашего приложения один за другим и посмотреть, исчезают ли утечки. Таким образом, вы сможете найти модуль (класс, функциональный блок и т. Д.), Где он находится.

...