iOs предупреждения памяти после часов отладки - PullRequest
1 голос
/ 27 июля 2011

Я создаю приложение для iPad и вижу странное поведение.Я загружаю изображения текстуры на гранях куба, каждая текстура имеет размер 1024x1024px.

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

Когда я выключаю, а потом включаю iPad, приложение работает отлично, все нормально и ошибок нет (в течение некоторого периода времени ...).

Возможно ли, что при сбое приложения во время отладки оно не освобождает память?И после нескольких сбоев iPad имеет столько мусора от предыдущих утечек, что он не может нормально работать?

Ответы [ 2 ]

1 голос
/ 27 июля 2011

То, что вы объясняете, похоже, намекает на то, что вы предлагаете, т. Е. Что после сбоя память восстанавливается не полностью, по крайней мере, не сразу. Однако может быть другое объяснение, а именно: сторож, который контролирует использование памяти и отправляет предупреждения памяти, не может очистить свое состояние для вашего приложения после сбоя вашего приложения (по крайней мере, не сразу); поэтому, когда вы начинаете новый сеанс отладки, он по-прежнему использует старую информацию о том, сколько памяти использует ваше приложение, и т. д.

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

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

0 голосов
/ 07 октября 2011

Я наконец решил эту проблему;) Это была просто проблема очистки памяти в моем коде.

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

...