Почему я не получаю низкую память, пока изображения не будут нарисовать на экране?

StackOverflow https://stackoverflow.com/questions/2917772

Вопрос

Я могу загрузить более 200 объектов Uiimage в NSMutablebally без проблем предупреждающих памятников памяти.

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

Только около 8 изображений каким-либо раз отображаются.

Занимает ли дополнительную память, чтобы на самом деле нарисовать Uiimage на экране?

Утечки памяти не отображаются, и я много раз рассмотрел код для утечек.

Это было полезно?

Решение

То документация говорит, что имея UIImage Не обязательно означает, что изображение на самом деле сохраняется в памяти, потому что он может быть очищен от кэша изображения. Но это говорит, что если вы попытаетесь нарисовать его, он будет вытянут обратно в память. Может быть, он начинает продувки от его кэша изображения, прежде чем предупреждает вас о состоянии низкой памяти. Это объясняет все, что вы видите.

Другие советы

Предположительно, что вы изначально создаете ссылку на изображение, единственные данные, которые фактически читают в это время, являются размерами и тип изображения (коротким), остальные данные обычно не требуются до запроса обычно из фонового процесса, т.е. на экране. Когда отображается фактические данные изображения загружаются из FilePath и декодированы в соответствии с его типом изображения, он затем кэшируется, чтобы он не должен быть загружен снова, кэширование требует много памяти плюс, если вы используете двойной / тройной Буферизация Существует дополнительная память, необходимая для выключения экрана. Попробуйте утилизировать все данные изображения перед загрузкой новых изображений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top