Распределение iOS - постоянный счет в кучах не всегда 0 - PullRequest
6 голосов
/ 03 февраля 2012

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

screenshot of instruments

Теперь, поскольку постоянный счетчик равен 0 для почтиполовина кучи, можно ли предположить, что нет неиспользуемой памяти?

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

Я использую Xcode 4.2.1, а приложение использует ARC.

Редактировать:

Благодаря Кендаллу Хельмштеттеру Гелнеру мне удалось отладить эту проблему дальше.Я, вероятно, не должен был использовать симулятор для отладки этого.Я запустил его на устройстве, и теперь он выглядит так, как будто есть один объект, который не освобождается:

Heapshots of app running on device

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

1 Ответ

2 голосов
/ 03 февраля 2012

Трудно сказать только из этого скриншота, что может кэшироваться или нет - UIImage будет кэшировать вещи, возможно, некоторые другие системные элементы. Похоже, что вы работаете в симуляторе, вы пробовали heapshot на устройстве?

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

...