IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Problème ressource GC_FOR_MALLOC freed objects


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut Problème ressource GC_FOR_MALLOC freed objects
    Bonjour

    Je fais du streaming avec des bitmap dans mon application. Je croyais que cela fonctionnait mais au bout de 3 min, il me met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android D/dalvikvm(): GC_FOR_MALLOC freed objects
    J'ai cette ligne qui s'affiche à toute vitesse sans arreter me bloquant l'application. Le souci est que je n'arrive pas a savoir ou est le probleme car il me met aucune erreur ds mes log. Je ne sais pas quoi car j'ai l'impression de bien vider mes btimap.recycle()

    Connaisez vous ce genre de probleme ?

    Merci de votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    android D/dalvikvm(): GC_FOR_MALLOC freed objects

    est normalement appelée régulièrement...
    En général cette ligne ne vient pas seule, mais avec un peu de logs autours...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Et non j'ai aucun log me donnant une infos sur l'erreur entre les lignes .
    Je pense que l'erreur vient de ma méthode connect(). J'ai une boucle infinie avec un while ou se trouve justement ma méthode connect(). J'utilise un mutlipartentity pr mes connexions ds ma méthode connect().

    Cela veut dire que j'instancie à chaque boucle un multipartentitiy. J'ai un doute sur le faite qu'il faut l'appeler qu'une fois et non a chaque appel le mmutlipartentity ??

    Pouvez me dire votre par rapport a cela

    Merci

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Mode divination enclenché ....
    Non je vois rien désolé....

    Un petit bout de code peut-être ?

  5. #5
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Ca s'appelle soit dans les cas de boucle infini, soit dans les phases de créations d'objets en gros volume d'expérience.

    Sinon, comme Nicroman : la divination, c'est pas encore au point
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Oui désolé pour le mode divination

    Effectivement sans bout de code ca sera dur pour m'aider. Alors j'ai essayé de mieux debuguer mon probleme ms tjs pas de solution.

    Voici ma boucle infinie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while(!done && error==false){
     canvas = surfaceHolder.lockCanvas();
     canvas.drawBitmap(lireMJPG(),0,0,null);
     lireMJPG().recycle();
     surfaceHolder.unlockCanvasAndPost(canvas);
    }
    lireMJPG() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /**
    * Prétraite les flux MJPG pour enlever l'encapsulation MJPG
    * @throws IOException
    */
    public Bitmap lireMJPG() {
    	lireLigne(2, dis); // jete les 2 premières lignes
    	ligne3 = lireLigne(dis);
    	contentLen = Integer.parseInt((ligne3.split(":")[1].trim()));
    	lireLigne(1, dis);
    	bit = lireJPG(contentLen);
    	readLine(1, dis); // jete la dernière ligne
    	return bit;
    }
    Suite...
    /**
    * Boucle sur dataInputStream
    * @param n
    * @param dis
    */
    public void lireLigne(int n, DataInputStream dis) {
    for (int i = 0; i < n; i++) {
    lireLigne(dis);
    }
    }

    Je pense (mais pas sur ) que le probleme vient de cette méthode qui est appelé plusieurs fois pour une image en plus présente dans ma boucle infinie...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    /**
     * Sépare et lecture d'une ligne
     * @param dis
     * @return
     */
    public String lireLigne(DataInputStream dis) {
    	result = "";
    	try {
    		end = false;
    		String lineEnd = "\n"; // suppose que la fin de la ligne est marqué avec un saut de ligne
    		lineEndBytes = lineEnd.getBytes();
    		byteBuf = new byte[lineEndBytes.length];
    		while (!end && !error) {
    			dis.read(byteBuf, 0, lineEndBytes.length);
    			t = new String(byteBuf);
    			result += t;
    			if (t.equals(lineEnd)) {
    				end = true;
    			}
    		}
    	} catch (Exception e) {
    		try {
    			dis.close();
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
    		error = true;
    		e.printStackTrace();
    	}
    	return result;	
    }
    Je sais pas quoi faire, j'ai peur de devoir concevoir mon code autrement ms c'eszt vraiment bizarre car cela marche parfaitement pendant 3 min et d'un coup, il me vide en GC_FOR_MALLOC a tte vitesse et bloque l'applie....

    Une idée ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Ressource demandée indisponible
    Par reeda dans le forum JSF
    Réponses: 12
    Dernier message: 09/10/2008, 14h05
  2. Problème ressource non disponible
    Par tomy29 dans le forum JSF
    Réponses: 2
    Dernier message: 20/07/2008, 16h00
  3. Probléme ressource avec Tutorial
    Par davlefou dans le forum Ogre
    Réponses: 11
    Dernier message: 25/01/2008, 22h09
  4. [HTML/Object] Problème superposition calques (tag <object
    Par busmik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/11/2005, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo