Использование памяти Очень высокое в ARC

В моем приложении я заметил, что оно очень медленно переключается между вкладками. Дальнейшее расследование показало, что в моем тесте использования памяти мое приложение занимало более 70 МБ за 5 минут тестирования. Мое собственное почтовое приложение использовало только 40 МБ. Этого не может быть

Я использую ARC, и я подумал, что если я использую что-то вроде

@property(nonatomic, strong)NSString *string;

ARC освободит это место автоматически. Кажется, это вообще не делается.

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

Чтобы дать вам больше информации о том, что делает приложение, вот список ключевых моментов:

- Получает почтовые сообщения от веб-сервиса вместе с pdf-файлами

-Хранит массивы для проверки того, были ли сообщения прочитаны, удалены или непрочитаны

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

-Та же проверка для pdf-файлов

Любая информация мне очень поможет.

Спасибо

ИЗМЕНИТЬ

Вот фотографии утечек, которые у меня есть. Это много.

введите здесь описание изображениявведите здесь описание изображения введите здесь описание изображения


person BigT    schedule 18.07.2012    source источник


Ответы (2)


Лучший способ выяснить причину такого большого использования памяти — использовать инструмент Instruments, а точнее инструмент Leaks.

Дополнительную информацию можно найти на сайте разработчиков Apple здесь.

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

person werner    schedule 18.07.2012
comment
Спасибо за помощь. Взгляните на редактирование в моем вопросе. Я добавил утечки. - person BigT; 18.07.2012
comment
Могу ли я предложить взглянуть на видеоролики WWDC 2010: Session 311 - Advanced Memory Analysis with Instruments. Это должно помочь вам разобраться в интерфейсе инструментов, чтобы найти код, вызывающий проблему. - person werner; 18.07.2012

Я не знаком с ARC, но полагаю, что это может немного замедлить ваше приложение. Почему? Подумайте: ARC автоматически выполнит вашу работу по «выпуску» вместо ручного выпуска. Предположим, у вас есть метод на 30 строк, и в первой строке вы создаете объект, затем в третьей строке он вам больше не нужен и вы вручную его освобождаете. В то время как ARC будет ждать окончания метода, чтобы понять, что ваш объект больше не нужен. Теперь предположим, что вы делаете много распределений в своем методе, и ARC будет хранить их все до тех пор, пока не будет достигнут конец метода. Отпускать вручную быстрее ИМХО.

person John Smith    schedule 18.07.2012