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

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

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

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

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

Если правильно понимаю если поставить больше кликов и списков то относительно быстро размер кучи достигнет своего предела.
Кто нибудь сталкивался с таким поведением как это можно исправить или хотя бы объяснить?
Миниатюры
Утечка памяти в Spiner   Утечка памяти в Spiner  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2012, 12:37
Ответы с готовыми решениями:

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

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

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

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

5
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
06.11.2012, 21:06 2
код встудию
0
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
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
07.11.2012, 11:38 4
попробуйте создать адаптер программно и сетить листу. в он дестрое например высвобаждать данные из адаптера уничтожать адаптер.
0
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 14
07.11.2012, 12:12  [ТС] 5
В проекте реализовал программно таже ситуация. В дестрое убивать все, вариант но, а если куча выпадающих списков в одном активити дестрой вызовется только при закрытии активити. Походу это баг операционки.
Есче одно интересное поведение программа состоит из списков, диалогов, меню реализовано в виде вкладок, списки отображают поля архива и постоянно обновляются. После отработки monkey, Heap size растет, Allocated остается примерно на одном месте, free растет. Не подскажите в чем дело? Может есть какие-то методы освобождения кучи или пересчета?
0
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
07.11.2012, 12:54 6
System.gc() . мне думается что вам придётся более детально следить за всеми адаптерами. делайте notifyDataSetChanged() и высвобождайте память как только это возможно. ну тут экспериментировать надо.
0
07.11.2012, 12:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2012, 12:54
Помогаю со студенческими работами здесь

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

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

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

Утечка памяти при использовании хандлера
new Handler().postDelayed(new Runnable() { @Override public void run() { ...


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

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