Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 117
#1

Утечка памяти - Программирование Android

13.06.2016, 11:28. Просмотров 362. Ответов 8
Метки нет (Все метки)

Разработал программу, получилась достаточно большая, использует сторонние библиотеки, работает без сбоев, но появилась проблема с утечкой памяти, которую не могу решить. При установке программы, её первом запуске кеш растёт до 48 Мб, а потом практически не изменяется и дальше программа работает в обычном режиме. Не могу понять откуда ноги растут. С какой стороны лучше подойти, с чего начать, где искать утечку? Ещё раз повторюсь. что именно при загрузке и первичной установке такая проблема!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2016, 11:28     Утечка памяти
Посмотрите здесь:

Утечка памяти - Программирование Android
Работаю в Android Studio Подскажите как определить утекает ли память при работе с программой или нет. А то знакомые говорят после какого то...

Утечка памяти в Spiner - Программирование Android
Здравствуйте. Создал новый проект в Layout добавил выпадающий список в ресурсы добавил массив значений списка, нового кода 0. Значения...

Android WebView утечка памяти - Программирование Android
При добавлении поддержки JavaScript setJavaScriptEnabled(true), когда перехожу по ссылкам, приложение начинает занимать очень много памяти,...

Activity + Service - утечка памяти? - Программирование Android
Всем привет. Подскажите, пожалуйста, когда я запускаю сервис из активити (startService) и мой сервис работает достаточно долго, так...

FragmentActivity -> DialogFragment (утечка памяти) - Программирование Android
Всем привет! Обнаружил у себя такой баг: при повороте экрана - каждый раз увеличивается кол-во вызовов "DF: onCreateView()"... код...

Утечка памяти при использовании хандлера - Программирование Android
new Handler().postDelayed(new Runnable() { @Override public void run() { textView.setText("" + 666); } },...

Утечка памяти при использовании Handler - Программирование Android
Добрый день, многоуважаемые форумчане :). Прошу помощи в решении проблемы. Приведу несложный исходный код. MainActivity.java ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
13.06.2016, 11:39     Утечка памяти #2
как связано "утечка памяти" и "при первом запуске кеш растёт до 48 Мб, а потом практически не изменяется и дальше программа работает в обычном режиме"?
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 117
13.06.2016, 12:02  [ТС]     Утечка памяти #3
Паблито, может связано, может нет, но наиболее вероятно, что где-то утечка, поэтому так и назвал тему
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
13.06.2016, 13:14     Утечка памяти #4
Цитата Сообщение от Delphian Посмотреть сообщение
но наиболее вероятно
с чего такой вывод?
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 117
13.06.2016, 14:13  [ТС]     Утечка памяти #5
Паблито, посмотрел heap size = 17,6MB также Allocated 13,7MB и первая мысль что наверное утечка, как минимум это даёт возможность хоть с какой-то причины начать поиск, так как других идей не было

Добавлено через 7 минут
Ещё хотел уточнить может кто-то знает почему не могу конвертировать DUMP HPROF file?
Ввожу
platform-tools> hprof-conv [-z] d:/dump.hprof d:/outfile.hprof

Получаю ответ:
Usage: hprof-conf [-z] infile outfile

-z: exclude non-app heaps, such as Zygote

Specify '-' for either or both files to use stdin/stdout.

Copyright (C) 2009 The Android Open Source Project

This software is built from source code licensed under the Apache License,
Version 2.0 (the "License"). You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

See the associated NOTICE file for this software for further details.

hprof-conf этой команды нет в platform tools
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
13.06.2016, 15:27     Утечка памяти #6
Цитата Сообщение от Delphian Посмотреть сообщение
hprof-conv [-z] d:/dump.hprof d:/outfile.hprof
Сами-то поняли, что написали? Здесь имелось в виду, что ключ -z является необязательным, а вы квадратные скобки рисуете.
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 117
13.06.2016, 15:58  [ТС]     Утечка памяти #7
CoolMind, изначально я делал

platform-tools> hprof-conv d:/dump.hprof d:/outfile.hprof

разницы не было, такой же ответ получал

Добавлено через 22 минуты
Попробовал запустить полностью пустое приложение, оно заняло 4,29Мб в кеше, потом очищаю кеш, перезапускаю прложение и показывает тоже самое.
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 581
14.06.2016, 08:19     Утечка памяти #8
Delphian, Приложение вываливается с OutOfMemory?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2016, 12:06     Утечка памяти
Еще ссылки по теме:

Утечка памяти - C++ Qt
есть программка в которой запущен таймер, каждую секунду вызывает слот, и каждую секнду приложение съедает 500 кб памяти, это норм? или...

Утечка памяти?! - Windows 7
Ребята! У меня оригинальная (недеюсь) Windows Seven Ultimate. Сейчас наблюдаю такую странную штуку - закрываю Firefox. Смотрю в диспетчер...

утечка памяти - C++
доброго времени суток Уважаемые форумчане, помогите пожалуйста разобраться с утечками памяти есть массив с геометрическими фигурами. ...

Утечка памяти - Delphi
Есть ли в Delphi 6 встроенные глюки, из-за которых может возникать утечка памяти? Конкретно использую указатели на записи и на динамические...

Утечка памяти - PHP БД
Здравствуйте. Столкнулся со следующей проблемой. Код: $countQuery = 'SELECT COUNT(*) FROM table1'; $count =...


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

Или воспользуйтесь поиском по форуму:
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 117
14.06.2016, 12:06  [ТС]     Утечка памяти #9
_Night_Scream_, Приложение работает без ошибок. Я взял запустил пустое приложение на другом телефоне Samsung Galaxy GT-I8262 Android 4.1 и кеш равен 0! Запустил вновь на Samsung J1 mini Android 5.0 и кеш равен 4,2MB. Своё приложение на Android 4.1, к сожалению, не могу запустить так как некоторые библиотеки работают только с Android 5.0 и 6.0. Когда запускаю на эмуляторах приложение, тоже есть разница на Android 5.0 получаю сообщение Storage space runnning out, но приложение работает, а на Android 6.0 работает без появления сообщений

Добавлено через 5 минут
Посмотрел кеш на эмоляторах всего 12 KB ничего лишнего нет. Правда всё приложение весит 29,5MB из них само приложение 10,25MB и данные 19,34MB

Добавлено через 1 час 5 минут
Вот мой класс где я работаю с кешем:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class CacheFile {
 
    private static final String TAG = "CacheFile";
    private static final String mFileName="cachefile";
    private static File file;
 
    //Write data into the file
    public static void writeFile(Context context, String data) {
        FileOutputStream outputStream=null;
        String oldData=readFile(context)+data;
        try {
            file = new File(context.getCacheDir(), mFileName);
            outputStream = new FileOutputStream(file);
            if(data!=null) {
                outputStream.write(oldData.getBytes());
            }
        } catch (IOException e) {
                 e.printStackTrace();
        }finally {
            if(outputStream!=null){
                try{
                    outputStream.close();
                }catch (Exception e){
                   e.printStackTrace();
                }
            }
        }
    }
 
    //Read from file
    public static String readFile(Context context) {
        BufferedReader inputStream = null;
        StringBuffer buffer = new StringBuffer();
        String line;
 
        try {
            file = new File(context.getCacheDir(), mFileName);
            inputStream = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
            while ((line = inputStream.readLine()) != null) {
                buffer.append(line);
            }
        } catch (IOException e) {
                e.printStackTrace();
        }finally {
            if(inputStream!=null){
                try{
                    inputStream.close();
                }catch (Exception e){
                      e.printStackTrace();
                }
            }
        }
        return buffer.toString();
    }
 
    public static void deleteFile(Context context){
        file = new File(context.getCacheDir(), mFileName);
        file.delete();
    }
}
Yandex
Объявления
14.06.2016, 12:06     Утечка памяти
Ответ Создать тему
Опции темы

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