Почему мое приложение получает didReceiveMemoryWarning и убивается, хотя память постоянна и достаточно памяти? - PullRequest
5 голосов
/ 17 марта 2011

У меня странные эффекты с моим приложением. Я реализовал свой собственный просмотрщик PDF. Он показывает одну страницу за раз. Использование Instruments Activity Monitor Я вижу, что моя реальная память постоянно находится на уровне около 50 МБ. После переключения страниц вперед и назад я получаю предупреждение об уровне памяти 0. Я делаю все возможное, чтобы отреагировать на это и пожертвовать фоновым изображением с низким разрешением, которое я рендерирую, чтобы показать что-то, пока CATiledLayer не догонит. Не помогает. Через несколько страниц я получаю предупреждение об уровне памяти 1 и 2 уровня, а через несколько страниц мое приложение уничтожается по причине «9». Память НИКОГДА не превышает 50 МБ!

Почему я получаю эти предупреждения в первую очередь? Там достаточно памяти доступно.

Это происходит на iPad под управлением iOS 4.3.

1 Ответ

2 голосов
/ 17 марта 2011

Я не думаю, что здесь происходит что-то таинственное - что, я уверен, не то, что вы хотели услышать.Нет никаких абсолютных цифр «безопасных» объемов памяти для использования.Правило таково: когда ОС говорит вам, что вы используете слишком много, используйте меньше.Сначала он будет сбрасывать фоновые процессы и предпочтение будет отдано вашему приложению на переднем плане, но все еще существуют ограничения.

В «старые времена» вам раньше удавалось получить 20 МБ.Я уверен, что вы можете безопасно получить больше, чем это на iPad, но, очевидно, это меньше, чем 50 МБ.

Вы не говорите, сколько памяти вы освобождаете, выпуская фоновое изображение, но кажется,нужно кешировать меньше данных.Возможно, вы также захотите проверить «Утечки» (также в «Инструментах»), чтобы убедиться, что вы выпускаете объекты, которые, как вы думаете, являются.

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