Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
1

Утечка памяти

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

Author24 — интернет-сервис помощи студентам
Разработал программу, получилась достаточно большая, использует сторонние библиотеки, работает без сбоев, но появилась проблема с утечкой памяти, которую не могу решить. При установке программы, её первом запуске кеш растёт до 48 Мб, а потом практически не изменяется и дальше программа работает в обычном режиме. Не могу понять откуда ноги растут. С какой стороны лучше подойти, с чего начать, где искать утечку? Ещё раз повторюсь. что именно при загрузке и первичной установке такая проблема!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2016, 11:28
Ответы с готовыми решениями:

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

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

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

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

8
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
13.06.2016, 11:39 2
как связано "утечка памяти" и "при первом запуске кеш растёт до 48 Мб, а потом практически не изменяется и дальше программа работает в обычном режиме"?
0
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
13.06.2016, 12:02  [ТС] 3
Паблито, может связано, может нет, но наиболее вероятно, что где-то утечка, поэтому так и назвал тему
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
13.06.2016, 13:14 4
Цитата Сообщение от Delphian Посмотреть сообщение
но наиболее вероятно
с чего такой вывод?
0
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
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
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
13.06.2016, 15:27 6
Цитата Сообщение от Delphian Посмотреть сообщение
hprof-conv [-z] d:/dump.hprof d:/outfile.hprof
Сами-то поняли, что написали? Здесь имелось в виду, что ключ -z является необязательным, а вы квадратные скобки рисуете.
0
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
13.06.2016, 15:58  [ТС] 7
CoolMind, изначально я делал

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

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

Добавлено через 22 минуты
Попробовал запустить полностью пустое приложение, оно заняло 4,29Мб в кеше, потом очищаю кеш, перезапускаю прложение и показывает тоже самое.
0
91 / 86 / 12
Регистрация: 08.08.2013
Сообщений: 667
14.06.2016, 08:19 8
Delphian, Приложение вываливается с OutOfMemory?
0
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
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();
    }
}
0
14.06.2016, 12:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2016, 12:06
Помогаю со студенческими работами здесь

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

Утечка памяти (или что-то еще)
Всем привет! Подскажите, пожалуйста, такой момент. Есть главная активность, на ней - 1 картинка....

Утечка памяти в RecyclerView onBindViewHolder setTag?
Есть RecyclerView и в onBindViewHolder я делаю viewHolder.container.setTag(item); Так вот,...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru