Страницы

Поиск по вопросам

четверг, 23 января 2020 г.

Android Bitmap странно ест память

#android #java


Когда я создаю картинку примерно 2000х2000 пикселей она занимает в куче примерно
15Мб. Когда я создаю 1500х2000 она занимает примерно 12Мб.

Но когда я создаю более чем 2000х2000 в DDMS почему-то показывается что максимальный
однобайтовый объект занимает 1Мб. Хотя сама куча довольно сильно увеличивается и работа
с картинкой нареканий не вызывает. 

Почему DDMS выдает 1Мб ??


    


Ответы

Ответ 1



Ответ из комментария: Насколько я помню, при некоторых условиях, применяется оптимизация — контент Bitmap помещается в shadow heap, который, соответственно, не засчитывается в application heap. При каких условиях и что именно происходит — полагаю, только в сорцах андроида читать, в документации вряд ли. На работу recycle это никак не влияет, так как recycle, фактически, ничего и не делает, кроме как помечает pixel data Bitmap как dead и помогает таким образом GC при его следующем вызове.

Ответ 2



У битмап есть ограничение в использовании памяти, если картинка превышает объем памяти пула, то вылет с ошибкой. Решается это путем шифрования или перевода в текстов. Файл или же так -http://m.habrahabr.ru/post/139717/

Комментариев нет:

Отправить комментарий