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

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

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

Утечка памяти в Spiner - Android

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

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

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

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

Android WebView утечка памяти Android
Android Spiner как проверить выбранный пункт
Освобождение памяти Android
Получение значения из spiner Android
Android Передача значения из SPiner
Утечка памяти при использовании Handler Android
Android Как привязать к выбранным пунктам Spiner разные ListView?
Дамп памяти Android
Проверка расширенной памяти Android
Android FragmentActivity -> DialogFragment (утечка памяти)
Утечка памяти Android
Android Activity + Service - утечка памяти?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
06.11.2012, 21:06     Утечка памяти в Spiner #2
код встудию
sleep3
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 14
07.11.2012, 10:03  [ТС]     Утечка памяти в Spiner #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>
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
07.11.2012, 11:38     Утечка памяти в Spiner #4
попробуйте создать адаптер программно и сетить листу. в он дестрое например высвобаждать данные из адаптера уничтожать адаптер.
sleep3
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 14
07.11.2012, 12:12  [ТС]     Утечка памяти в Spiner #5
В проекте реализовал программно таже ситуация. В дестрое убивать все, вариант но, а если куча выпадающих списков в одном активити дестрой вызовется только при закрытии активити. Походу это баг операционки.
Есче одно интересное поведение программа состоит из списков, диалогов, меню реализовано в виде вкладок, списки отображают поля архива и постоянно обновляются. После отработки monkey, Heap size растет, Allocated остается примерно на одном месте, free растет. Не подскажите в чем дело? Может есть какие-то методы освобождения кучи или пересчета?
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
07.11.2012, 12:54     Утечка памяти в Spiner #6
System.gc() . мне думается что вам придётся более детально следить за всеми адаптерами. делайте notifyDataSetChanged() и высвобождайте память как только это возможно. ну тут экспериментировать надо.
Yandex
Объявления
07.11.2012, 12:54     Утечка памяти в Spiner
Ответ Создать тему
Опции темы

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