kivsiak
@kivsiak
software engineer

Частый VMDebug.startGC() при создании bitmap?

Мое приложение активно создает Bitmap из bytearray или встроенных ресурсов.

После тестов на разных девайсах обнаружил что производительность в разы различается на Lenovo IconTab и Samsung sgs3 или Tab 10.1


После запуска профилировщика с удивлением обнаружил что время вызова Bitmap.nativeCreate() различается в разы если на леново оно он находися глубоко внизу то на самсунгах на 3 месте. Более того 97% процессорного времени внутри него занимает VMDebug.startGC() которому в теории полагается быть фейковым. На леново я этого метода не вижу.


Пробовал запускать из Android Studio в дебаг и обычном режиме. Делал релизные сборки и заливал их руками. Все равно производительность одинаково ужасная.


Есть идеи куда тут можно копать и что смотреть?
  • Вопрос задан
  • 3128 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Evgenij_Popovich
1. Зачем декодировать сразу все 100 картинок и держать их в памяти, а не по мере появления их на экране?
2. Используйте опции декодирования, чтобы картинки не резервировали память на долго

final BitmapFactory.Options options = new BitmapFactory.Options();
 
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
 
// #302 added to reduce amount of OutOfMemory errors
options.inDither = false; // Disable Dithering mode
options.inPurgeable = true; // Tell to gc that whether it needs
                            // free memory, the Bitmap can be
                            // cleared
options.inInputShareable = true; // Which kind of reference will
                                 // be used to recover the Bitmap
                                 // data after being clear, when
                                 // it will be used in the future
options.inTempStorage = new byte[32 * 1024];


3. Потребляемую память можно посмотреть на вкладке Heap view. На Ваших скринах этого не видно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
27 нояб. 2020, в 14:53
2500 руб./за проект
27 нояб. 2020, в 14:43
35000 руб./за проект