Моему приложению не хватает памяти. В отчете о памяти XCode я вижу, что использование памяти на устройстве увеличивается до чуть более 500 МБ, прежде чем оно будет выключено.
При профилировании в Инструментах (либо с помощью инструмента распределения, либо инструмента утечки) этого не происходит. Процесс занимает около 100 МБ и балансируется, поскольку он выполняет часть задачи, интенсивно использующую память. Приложение не вылетает при запуске в Инструментах.
Что может вызвать расхождение?
Интенсивный процесс использует UIWebView для определения длины нескольких страниц контента. Веб-представление находится в фоновом режиме и загружает страницу. По завершении загрузки он вычисляет размер и загружает следующую страницу до тех пор, пока не будет рассчитана длина всех страниц.
Поскольку мне не удалось получить те же проблемы с памятью в Instruments, я добавил ведение журнала в методы init и deleteloc для всех основных частей и могу подтвердить, что они выделяются и освобождаются, как и ожидалось.
После этого я попытался предположить, что выделение и освобождение памяти происходит правильно, но я просто выделяю память быстрее, чем система может перераспределить память. Я попытался остановить процесс до того, как закончится память, чтобы посмотреть, упадет ли использование памяти. В отчете XCode о памяти сообщается о небольшом падении, но незначительном, даже после того, как он простоит несколько минут.
Мой следующий шаг — попытаться упростить процесс, пока проблема не будет устранена.
Кто-нибудь еще сталкивался с чем-то подобным, когда приложение в «Инструментах» делает что-то совершенно иное, чем не в «Инструментах», или есть какое-либо объяснение того, что может вызвать это?
@autoreleasepool
чаще. - person Cy-4AH   schedule 21.08.2014