iOS, iPhone, iPad: медленная загрузка - это хорошая стратегия, чтобы избежать сбоев памяти? - PullRequest
1 голос
/ 23 августа 2011

Этот вопрос является продолжением этого другого вопроса .

У меня есть игра в App Store, которая очень редко вылетает при загрузке на iPad1. Игра требует больших ресурсов и действительно загружает несколько больших текстур при запуске. Перезапуск устройства устраняет проблему. Я не смог воспроизвести это на своих собственных устройствах, поэтому у меня есть отчеты / данные только от нескольких клиентов.

(Предположим, ради этого вопроса, что (а) моему приложению действительно нужно загрузить все текстуры, которые оно загружает, и (б) я не делаю ничего глупого, например, утечки чего-либо или избавления от чего-либо как как только смог.)

Вопрос: имеет ли смысл пытаться загружать текстуры медленнее?

Смысл в том, что когда мое приложение загружает текстуры, когда оно запускается, оно начинает быстро использовать память. Если есть другие приложения, которые являются резидентными и используют память, которая мне нужна, ОС начнет отправлять уведомления тем приложениям, которые должны освободить память. Но я понимаю, что это дает этим приложениям пару секунд, чтобы освободить память и / или выйти, и в течение этих секунд мое приложение продолжает агрессивно загружать текстуры. Так что мысль в том, что ОС паникует, и ей нужно что-то убить сразу, и убивает мое приложение. Но, возможно, если бы я загружал вещи медленнее, у других приложений было бы время ответить на предупреждения памяти и освободить их, и все бы сработало.

Имеет ли смысл эта линия мысли? У вас есть опыт применения такого подхода, помогающего избежать сбоев?

1 Ответ

1 голос
/ 25 августа 2011

Одна проблема, связанная с загрузкой всего в самом начале: в зависимости от того, когда вы это делаете, запуск может занять слишком много времени, и сторожевой таймер убьет ваше приложение из-за отсутствия ответа. (Похоже, это не то, что происходит с вами, но это теоретическая возможность. Легко обнаружить 0x8badf00d в журналах аварийного завершения.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...