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

Java Discussion :

detecter une fuite de memoire


Sujet :

Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 421
    Points : 0
    Points
    0
    Par défaut detecter une fuite de memoire
    bonjour svp comment detecter une fuite de memoire dans ce code
    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
    33
    34
    35
    import java.util.EmptyStackException;
     
     
    public class Pile {
    	private Object[] contenu;
    	private int taille = 0;
     
    	public Pile(int capacite)
    	{
    		contenu = new Object[capacite];
    	}
    	private void assurance ()  {
    if (contenu.length == taille)  {
    	Object ancien = contenu;
    	contenu = new Object[4*taille + 1] ;
    	System.arraycopy(ancien, 0, contenu, 0, taille);
     
    }
     
     
    }
    	public void add(Object object) {
    	assurance();
    	contenu[taille++] = object; 
    	}
    	public Object sommet() {
     
    	if (taille == 0) {
    		throw new EmptyStackException();
     
    }
    	return contenu[--taille];
    	}		
     
    }
    merci d'avance

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    j'ai bien peur que la seule manière de le détecter est de se servir de sa tête.

    Où est-ce qu'on stocke des références vers des instances d'objets, quand il devrait y avoir null à la place, et à quel moment.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 421
    Points : 0
    Points
    0
    Par défaut
    Merci mais dans le code ci dessus que dois je modifier
    Pour supprimer la fuite de mémoire
    Merci d'avance

  4. #4
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour,
    Je n'ai pas trop le temps de regarder et d'essayer le code, mais une recherche rapide m'a donné par exemple sur notre site ici: Tutoriel sur la détection de fuites mémoire dans une application Ellipse
    Note: tout ce que je fais en Java, toujours sous Eclipse.

    Des fuites de mémoire sont dramatiques en C++. On obligeait les programmeurs à passer un outil avant le release du paquet.
    En Java, je ne me suis jamais trop posé la question après plus de 15 ans de programmation. Il suffit que le code soit bien écrit, car c'est souvent de mauvaises pratiques qui les entrainent.

    Je n'ai fait, depuis une dizaine d'années, que des applications GUI, qui sont automatiquement relancés, ou des applis serveurs pour des systèmes embarqués où il suffit de les redémarrer régulièrement, par exemple à minuit.
    Il y a d'autres méthodes comme des watchdogs pour surveiller la mémoire. De bons try/catch peuvent aussi aider à relancer l'application et en sauvegardant l'endroit exact.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2013
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 131
    Points : 203
    Points
    203
    Par défaut
    Salut,

    La fuite de memoire peut etre le fait que ta methode Sommet() ne supprime pas l'element de ta pile. Dans ce cas la, nous ne pouvons qu'ajouter des elemens dans ta pile ce qui menera forcement tot ou tard a l'utilisation de toute la memoire disponible.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Euh, non c'est juste qu'il faut modifier sommet() pour qu'elle enlève l'élément de la pile.

    Ça ne suffit pas de réduire la taille de 1. Il faut aussi mettre null dans le tableau, en lieu et place de l'élément qu'on ne veut plus avoir dans la pile.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Repaint() qui me fait une fuite de memoire
    Par R1beLlu2B dans le forum 2D
    Réponses: 9
    Dernier message: 05/09/2018, 02h17
  2. Réponses: 21
    Dernier message: 01/09/2011, 09h56
  3. provoquer une fuite de memoire ?
    Par tastika dans le forum Général Java
    Réponses: 3
    Dernier message: 27/03/2009, 16h40
  4. Dll et detection de fuite de memoire
    Par Nicolas Bauland dans le forum Visual C++
    Réponses: 3
    Dernier message: 06/08/2007, 22h31
  5. fuite de memoire dans une liste de pointeur sur composant
    Par Nicolos_A dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/12/2004, 08h46

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