JPEG занимает ~ 20x места, как ожидалось - PullRequest
1 голос
/ 26 мая 2020

Я использую jpeg в моем приложении Android, которое занимает 1,6 МБ на диске (в OSX). Я заметил предупреждения сборщика мусора в журналах приложений и сделал дамп кучи в Android Studio. Из сохраненного размера кучи в 36,5 МБ фрагмент моей домашней страницы (это тот, который содержит jpeg) занимает 36 МБ.

Я загрузил дамп кучи в Memory Analyzer Tool (MAT) и увидел android .graphics.Bitmap, занимающий 36 МБ места в куче. В представлении атрибутов не отображается имя файла, но размеры соответствуют размерам JPEG размером 1,6 МБ.

MAT General View

MAT Attribute View

Каким образом изображение, занимающее менее 2 МБ на диске, займет до 36 МБ на Android куче приложения?

Спасибо

Ответы [ 2 ]

1 голос
/ 26 мая 2020

JPEG - это формат сжатого изображения. Для его рендеринга Android необходимо его распаковать.

0 голосов
/ 26 мая 2020

Ну, как указал @CommonsWare, bitmap отображается не в сжатом формате, который в вашем случае равен JPEG.

Но как решить эту очевидную проблему; bitmap down-sampling, bitmap configurations и resizing - допустимые варианты для уменьшения размера bitmap.

Тем не менее, управление распределением памяти всегда является хорошей идеей. Специально что-то вроде Managing Bitmap Memory и Caching Bitmaps.

И это обычно сводится к

1- Version(s) of Android you are targeting

2- Memory vs. Disk cache
...