Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
niki2012
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 15
1

Grow heap (frag case) to 54 MB

30.07.2013, 15:43. Просмотров 1361. Ответов 6
Метки нет (Все метки)

В программе для отображения информации использую 5 ImageView с Level-List. Все 5 xml файлов такого вида, различаются только ресурсы картинок
XML
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:maxLevel="1" android:drawable="@drawable/wave11"/>
    <item android:maxLevel="2" android:drawable="@drawable/wave12"/>
    <item android:maxLevel="3" android:drawable="@drawable/wave13"/>
    <item android:maxLevel="4" android:drawable="@drawable/wave14"/>
</level-list>
Программно создаю 5 ImageView и устанавливаю им ресурсы (wave1, wave2 и тд - xml-файлы)
Java
1
2
3
4
5
image[0].setImageResource(R.drawable.wave1);
image[1].setImageResource(R.drawable.wave2);
image[2].setImageResource(R.drawable.wave3);
image[3].setImageResource(R.drawable.wave4);
image[4].setImageResource(R.drawable.wave5);
Все используемые в приложении изображения вместе весят не больше 200 килобайт.
При этом при запуске в Log'e появляются сообщения об увеличении объема используемой приложением оперативной памяти:
07-30 15:33:29.685: I/dalvikvm-heap(31125): Grow heap (frag case) to 13.317MB for 518416-byte allocation
07-30 15:33:29.725: I/dalvikvm-heap(31125): Grow heap (frag case) to 15.292MB for 2073616-byte allocation
07-30 15:33:29.825: I/dalvikvm-heap(31125): Grow heap (frag case) to 17.295MB for 2073616-byte allocation
07-30 15:33:29.895: I/dalvikvm-heap(31125): Grow heap (frag case) to 19.273MB for 2073616-byte allocation
07-30 15:33:30.010: I/dalvikvm-heap(31125): Grow heap (frag case) to 21.250MB for 2073616-byte allocation
07-30 15:33:30.055: I/dalvikvm-heap(31125): Grow heap (frag case) to 23.229MB for 2073616-byte allocation
07-30 15:33:30.105: I/dalvikvm-heap(31125): Grow heap (frag case) to 25.208MB for 2073616-byte allocation
07-30 15:33:30.150: I/dalvikvm-heap(31125): Grow heap (frag case) to 27.186MB for 2073616-byte allocation
07-30 15:33:30.200: I/dalvikvm-heap(31125): Grow heap (frag case) to 29.165MB for 2073616-byte allocation
07-30 15:33:30.250: I/dalvikvm-heap(31125): Grow heap (frag case) to 31.142MB for 2073616-byte allocation
07-30 15:33:30.295: I/dalvikvm-heap(31125): Grow heap (frag case) to 33.122MB for 2073616-byte allocation
07-30 15:33:30.340: I/dalvikvm-heap(31125): Grow heap (frag case) to 35.099MB for 2073616-byte allocation
07-30 15:33:30.390: I/dalvikvm-heap(31125): Grow heap (frag case) to 37.077MB for 2073616-byte allocation
07-30 15:33:30.455: I/dalvikvm-heap(31125): Grow heap (frag case) to 39.055MB for 2073616-byte allocation
07-30 15:33:30.495: I/dalvikvm-heap(31125): Grow heap (frag case) to 41.035MB for 2073616-byte allocation
07-30 15:33:30.540: I/dalvikvm-heap(31125): Grow heap (frag case) to 43.012MB for 2073616-byte allocation
07-30 15:33:30.610: I/dalvikvm-heap(31125): Grow heap (frag case) to 44.990MB for 2073616-byte allocation
07-30 15:33:30.665: I/dalvikvm-heap(31125): Grow heap (frag case) to 46.968MB for 2073616-byte allocation
07-30 15:33:30.715: I/dalvikvm-heap(31125): Grow heap (frag case) to 48.948MB for 2073616-byte allocation
07-30 15:33:30.760: I/dalvikvm-heap(31125): Grow heap (frag case) to 50.925MB for 2073616-byte allocation
07-30 15:33:30.810: I/dalvikvm-heap(31125): Grow heap (frag case) to 52.904MB for 2073616-byte allocation
07-30 15:33:30.865: I/dalvikvm-heap(31125): Grow heap (frag case) to 54.881MB for 2073616-byte allocation

(Если закомментить те пять строк с установкой ресурсов для ImageView[], сообщения не появляются)

Почему мало весящие изображения могут так сильно грузить оперативную память устройства?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 15:43
Ответы с готовыми решениями:

Grow heap ImageView
Добрый день, пытаюсь немного оптимизировать свой код. Наибольшие проблемы на...

Не работает flex-grow
&lt;div class=&quot;row flex-gr&quot;&gt; &lt;div class=&quot;col&quot;&gt;1&lt;/div&gt; &lt;div...

Flex-grow и размеры блока
Всем привет, товарищи. В общем, у меня есть 2 ряда с блоками. (см фото) Все...

в case 7 - нужно сделать поиск по номеру группы, а в case 6 сортировку по имени
Помогите пожалуйста: в case 7 - нужно сделать поиск по номеру группы, а в case...

Ошибка CASE в CASE возникла при переносе в столбец с текстом, дату
Подскажите пожалуйста, при формировании второго условия возникла ошибка, как...

6
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
30.07.2013, 16:40 2
У вас все изображения хранятся в каталоге drawable или для каждого экрана есть свои копии с разными разрешениями (в каталогах drawable-mdpi, drawable-hdpi и пр)? И покажите код одного из wave.xml.
0
niki2012
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 15
30.07.2013, 19:09  [ТС] 3
Все изображения хранятся в единственной версии в папке drawable, код xml для wave1 в моем первом сообщении:
XML
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:maxLevel="1" android:drawable="@drawable/wave11"/>
    <item android:maxLevel="2" android:drawable="@drawable/wave12"/>
    <item android:maxLevel="3" android:drawable="@drawable/wave13"/>
    <item android:maxLevel="4" android:drawable="@drawable/wave14"/>
</level-list>
wave2:
XML
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:maxLevel="1" android:drawable="@drawable/wave21"/>
    <item android:maxLevel="2" android:drawable="@drawable/wave22"/>
    <item android:maxLevel="3" android:drawable="@drawable/wave23"/>
    <item android:maxLevel="4" android:drawable="@drawable/wave24"/>
</level-list>
И так далее по аналогии. Картинок (wave11, wave12, ... , wave21, ... , wave31, ... , wave54) в сумме 20 штук, но, как я уже говорил, их суммарный вес не превышает 200 кб
0
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
30.07.2013, 19:19 4
У Android'а есть очень интересное свойство. Если изображения хранятся только в каталоге drawable, то он считает их как drawable-mdpi и для бОльших экранов пропорционально увеличивает их в размере, тем самым занимая память в разы больше, чем изначально весили эти изображения.
Для таких случаев используют каталог drawable-nohdpi вместо обычного drawable. Работают они аналогично, только первый использует изображения "как есть", не позволяя их масштабировать системе.
1
niki2012
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 15
30.07.2013, 19:33  [ТС] 5
Спасибо, используемая память уменьшилась до 14 мб, но для больших экранов немасштабируемость не подойдет...
А не подскажете, при использовании level-list'a в ОЗУ хранятся сразу все изображения, указанные в xml-файле? Если да, то поможет ли программная установка картинки напрямую в ImageView без level-list через какой-нибудь switch case?
0
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
30.07.2013, 19:41 6
Цитата Сообщение от niki2012 Посмотреть сообщение
в ОЗУ хранятся сразу все изображения, указанные в xml-файле?
Да
Цитата Сообщение от niki2012 Посмотреть сообщение
поможет ли программная установка картинки напрямую в ImageView без level-list через какой-нибудь switch case?
Думаю да, если использовать только один ImageView. Но точно не скажу, не обращал внимания на память в таких случаях.
1
niki2012
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 15
30.07.2013, 19:53  [ТС] 7
Спасибо за помощь, буду пробовать
0
30.07.2013, 19:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2013, 19:53

чем use case отличается от business use case (только по русски объяснить и с примером)
_subj

При выборе case 1 всегда черный экран? как правильно указать путь в case
Доброго времени суток) проблема с компиляций когда при компилирование...

Ошибки при работе с ComboBox (Case without Select Case)
подскажите пожалуйста в чем ошибка. Я начинающий, поэтому не относитесь строго...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru