Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

06.11.2012, 12:37. Просмотров 571. Ответов 5
Метки нет (Все метки)

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

Запускаю в эмуляторе приложение, и тест monkey с 20000 повторениями.
После чего значения Heap рис. 2

Если правильно понимаю если поставить больше кликов и списков то относительно быстро размер кучи достигнет своего предела.
Кто нибудь сталкивался с таким поведением как это можно исправить или хотя бы объяснить?
0
Миниатюры
Утечка памяти в Spiner   Утечка памяти в Spiner  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2012, 12:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Утечка памяти в Spiner (Программирование Android):

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

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

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

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

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

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

5
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
06.11.2012, 21:06 #2
код встудию
0
sleep3
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 14
07.11.2012, 10:03  [ТС] #3
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
package com.example.testspiner;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;
 
public class MainActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
 
    
}
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
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:padding="@dimen/padding_medium"
        android:text="@string/hello_world"
        tools:context=".MainActivity" />
 
    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:entries="@array/planets_array"
        android:layout_marginTop="22dp"
        android:layout_toLeftOf="@+id/textView1" />
 
</RelativeLayout>
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<resources>
    <string name="app_name">testSpiner</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
</resources>
0
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
07.11.2012, 11:38 #4
попробуйте создать адаптер программно и сетить листу. в он дестрое например высвобаждать данные из адаптера уничтожать адаптер.
0
sleep3
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 14
07.11.2012, 12:12  [ТС] #5
В проекте реализовал программно таже ситуация. В дестрое убивать все, вариант но, а если куча выпадающих списков в одном активити дестрой вызовется только при закрытии активити. Походу это баг операционки.
Есче одно интересное поведение программа состоит из списков, диалогов, меню реализовано в виде вкладок, списки отображают поля архива и постоянно обновляются. После отработки monkey, Heap size растет, Allocated остается примерно на одном месте, free растет. Не подскажите в чем дело? Может есть какие-то методы освобождения кучи или пересчета?
0
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
07.11.2012, 12:54 #6
System.gc() . мне думается что вам придётся более детально следить за всеми адаптерами. делайте notifyDataSetChanged() и высвобождайте память как только это возможно. ну тут экспериментировать надо.
0
07.11.2012, 12:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2012, 12:54
Привет! Вот еще темы с ответами:

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

Получение значения из spiner - Программирование Android
Как можно получить значение из спайнера? То есть сначала выбираем элементы в спайнере потом по нажатию ок в диалоге это значение передаётся...

Передача значения из SPiner - Программирование Android
В диалоге происходит выбор названия таблицы в Spiner списке. По нажатию кнопки OK это значени должно присвоитсья переменной из другого...

Spiner как проверить выбранный пункт - Программирование Android
Здравствуйте, у меня есть Spiner со списком, выбранный элемент задаю TextView-у но не как не получается сравнить выбранный элемент с...


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

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

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