2013-09-09 4 views
1

У меня есть большой растровый рисунок, созданный с помощью Bitmap.createBitmap(). Есть ли смысл в письменной формесоздание и уничтожение объектов Java

bitmap = null; 

непосредственно перед

bitmap = Bitmap.createBitmap(); 

позволить GC использовать память, занятую со старой битовой картой при построении нового растрового изображения.

Уровень API - 11.

Спасибо.

+0

, что является вашей Android версии – Raghunandan

+3

Если действительно непосредственно перед: нет, нет смысла там. GC это узнает. – ppeterka

+0

@ Raghunandan Почему это может измениться? – Axel

ответ

0

bitamp = null; не гарантирует, что GC освободит память, занятую растровым объектом. Brcause как битмап - это последний класс, поэтому приоритет конечного объекта для GC очень низкий. Используйте метод bitmap.recycle() для обеспечения сбора мусора (GC).

0

http://www.youtube.com/watch?v=_CruQY55HOk

Посмотрите на видео около 11:23. Парень рассказывает об управлении растровой памятью

Его левый сборщик мусора для освобождения памяти. Вместо bitmap = null используйте bitmap.recycle() на andorid 2.3.3 и ниже. Используйте BitmapFactory.Options.inBitmap на 3,0 и выше

Android - Bitmap and memory management?

http://developer.android.com/training/displaying-bitmaps/manage-memory.html

На андроид 2.3.3 и ниже

На Android 2.3.3 (уровень API 10) и ниже, с использованием рецикла() является рекомендация. Если вы показываете большое количество растровых данных в своем приложении, вы, вероятно, столкнетесь с ошибками OutOfMemoryError. Метод recycle() позволяет приложению восстанавливать память как можно скорее.

На Android 3.0 и выше

пиксельные данные растрового изображения хранятся в куче

Android 3.0 (уровень API 11) вводит в поле BitmapFactory.Options.inBitmap. Если этот параметр установлен, методы декодирования, которые принимают объект «Параметры», будут пытаться повторно использовать существующее растровое изображение при загрузке содержимого. Это означает, что память растрового изображения повторно используется, что приводит к повышению производительности и удалению как распределения памяти, так и де-распределения.

проверить Также это может помочь

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html