2015-05-15 3 views
2

Я не совсем уверен, сколько памяти будет выделено на следующей переменной «битовой карты»,Сколько памяти выделено для этого растрового изображения?

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.example); 
bitmap = Bitmap.createScaledBitmap(bitmap, 100, 100, true); 

Say, размер исходного изображения 1024 * 768 и некоторая память была выделена в растровом изображении , Затем растровое изображение было масштабировано до 100 * 100, и память, выделенная переменной «bitmap», была изменена из-за изменения измерения?

ответ

1

A переменная только когда-либо занимает небольшой объем памяти (если есть). Всего несколько байт. Переменная типа объекта использует достаточно памяти для хранения указателя на объект.

Объекты, на которые указывают переменные, однако, могут занимать любое количество памяти. createScaledBitmap создает новое растровое изображение, поэтому после запуска вашего кода в памяти, вероятно, будет два растровых изображения. Один из них (оригинальный, более крупный), однако, больше не имеет ссылок на живые ссылки (например, переменных), указывающих на него, поэтому в конечном итоге будет собран мусор.

+0

Это было хорошее объяснение. :) – theapache64

Смежные вопросы