Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 29.10.2016
Сообщений: 21

Утечка памяти (или что-то еще)

26.09.2017, 09:41. Показов 948. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Подскажите, пожалуйста, такой момент.
Есть главная активность, на ней - 1 картинка. При нажатии на картинку - переходим на новую активность, где располагается 2 фрагмента (друг за другом), и в каждом фрагменте - по 12 небольших картинок. Получается, что всего в этой активности на экране - 24 картинки, вес всех этих картинок - 6 МБ.
При добавлении одной из последних картинок, стало вылетать приложение. Вылетает не сразу, а как только нажимаю на картинку для перехода на другую активность с фрагментами. Посмотрел по логам, ошибка - Failed to allocate a 6948184 byte allocation with 4194304 free bytes and 5MB until OOM
Не хватает памяти для запуска активности с 2-мя фрагментами ( там, где 24 картинки). Все картинки складываю в папку drawable.
Эмулятор - Nexus 6 API 25.
Его настройки такие:

Если в настройках RAM ставлю 2048, то приложение уже не вылетает.
Но не у всех телефонов столько оперативной памяти. Если кто-то поставит приложение на старый телефон, то приложение будет вылетать.
Почему не хватает памяти на небольшие картинки общим весом 6 МБ? А если мне нужно будет разместит большие картинки весом 1-2 МБ.

Во фрагменте использую TableLayout, одна из ячеек выглядит так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_vertical">
 
            <ImageView
                android:id="@+id/imageView13"
                android:onClick="onClick"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:paddingLeft="20dp"
 
                app:srcCompat="@drawable/example1" />
 
            <TextView
                android:id="@+id/textView13"
                android:onClick="onClick"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="20sp"
 
                android:text="@string/example1"
                android:textSize="20sp"
                android:textColor="#ffffff"/>
        </TableRow>
Получается, что где-то происходит утечка памяти? Помогите разобраться.
Всем неравнодушным к данной проблеме спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.09.2017, 09:41
Ответы с готовыми решениями:

Утечка памяти или что? Валидность итератора
вообщем падает задача через раз, вроде бы в 44 строке, вместо str+= надо бы по идее метод push_back() но при подстановке...

Стоит 4 гига. Windows7 64. Что лучше сделать,отключить часть процесса автозапуска,а какие за что отвечают не пойму, или докупить ещё планок памяти?
Не давно заметил что комп иногда &quot;притормаживает&quot;,а гаджет &quot;индикатор ЦП&quot; показывает нагрузку в тот момент до 70% озу. Стоит 4 гига....

TChart или утечка памяти?
Всем привет. Столкнулся с задачкой, чтобы вывести значения работы двигателя. Необходимо показывать значения за последние 30 секунд. На ум...

8
0 / 0 / 0
Регистрация: 29.10.2016
Сообщений: 21
26.09.2017, 09:55  [ТС]
Да, и перехожу на другую активность с помощью интента:

Java
1
2
3
4
5
6
7
8
public void onClick(View view) {
        switch (view.getId()){
            case R.id.image1:
                Intent intent = new Intent(MainActivity.this, TwoActivity.class);
                startActivity(intent);
                break;
             }
    }
0
33 / 35 / 9
Регистрация: 03.02.2017
Сообщений: 141
26.09.2017, 10:34
Помести картинки в папку drawable-xxhdpi.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
26.09.2017, 10:35
размеры картинок в ПИКСЕЛЯХ какие?

каждая такая картинка в памяти будет занимать примерно w * h * 3 байт
и не важно какой размер задан в imageview
0
33 / 35 / 9
Регистрация: 03.02.2017
Сообщений: 141
26.09.2017, 10:41
Цитата Сообщение от Mish2 Посмотреть сообщение
Все картинки складываю в папку drawable
Папке drawable отвечает размер экрана ldpi. Это значит, что если у тебя экран xxhdpi то в рантайме проц будет переделывать картинку под твой экран. Здравствуй System.OutOfMemoryError. Чтобы не заниматься такой ерундой и были созданы папки под соответствующие размеры экрана.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
26.09.2017, 10:46
Цитата Сообщение от 264D Посмотреть сообщение
Папке drawable отвечает размер экрана ldpi.
откуда инфа? всегда mdpi бралось за эталон

и вообще ldpi это плотность экрана а не размер
0
33 / 35 / 9
Регистрация: 03.02.2017
Сообщений: 141
26.09.2017, 11:04
Цитата Сообщение от Pablito Посмотреть сообщение
и вообще ldpi это плотность экрана а не размер
да, верно подмечено - речь идет именно о разрешении экрана, а не его размере.
Касательно папки drawable, перепроверил информацию и оказалось, что и тут ты прав, сударь
The system assumes that default resources are designed for the baseline screen size and density, which is a normal screen size and a medium-density
0
0 / 0 / 0
Регистрация: 29.10.2016
Сообщений: 21
26.09.2017, 11:32  [ТС]
Цитата Сообщение от 264D Посмотреть сообщение
Помести картинки в папку drawable-xxhdpi.
Спасибо, попробую вечером.

Добавлено через 1 минуту
Цитата Сообщение от Pablito Посмотреть сообщение
каждая такая картинка в памяти будет занимать примерно w * h * 3 байт
и не важно какой размер задан в imageview
в среднем - 400*400. Получается, то в среднем картинка - 0,5 МБ. Это много? Уменьшить их?

Добавлено через 1 минуту
Цитата Сообщение от 264D Посмотреть сообщение
Папке drawable отвечает размер экрана ldpi. Это значит, что если у тебя экран xxhdpi то в рантайме проц будет переделывать картинку под твой экран. Здравствуй System.OutOfMemoryError. Чтобы не заниматься такой ерундой и были созданы папки под соответствующие размеры экрана.
Спасибо! Также попробую сегодня раскидать по соответствующим папкам.
0
91 / 86 / 12
Регистрация: 08.08.2013
Сообщений: 667
28.09.2017, 07:31
Mish2, еще вариант использовать Glide, для вставки в view, он выполнит работу по сжатию и всё будет хорошо.
Но если картинки статичные (в самом apk), то я считаю предпочтительней сделать как описали выше с папками под экран.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.09.2017, 07:31
Помогаю со студенческими работами здесь

Утечка памяти или куда пропало =)
Люди всем привет :) Почему у меня после выполнения кода в a = '' ?, когда a = 'Z', a = 'A'O_o var a : array of string; b : array...

TStringList ** утечка памяти, Что делать?
Вот пример, тут возникает утечка памяти. Как правильно оформить удаление в функции test()??? TStringList **SL; int main() { for...

удаляется ли объект или происходит утечка памяти?
Добрый день, подскажите, при таком коде, удаляется ли объект или происходит утечка памяти? std::list&lt;A*&gt; entities; ...

Утечка памяти, что если не освободить зарезервированную память?
Я не понимаю этого вообще. Получается, если я напишу программу с такой ошибкой специально и буду постоянно резервировать память и не...

утечка памяти, чтение процессов и кое что по мелочи
здравствуйте Уважаемые участники форума. решил я начать изучать RUBY (ранее баловался написанием на Pascal. давно это было), и тут же...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru