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

  1. #1
    Membre du Club

    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2013
    Messages : 163
    Points : 64
    Points
    64

    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
    11 802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 802
    Points : 20 021
    Points
    20 021

    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
    Membre du Club

    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2013
    Messages : 163
    Points : 64
    Points
    64

    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
    Membre éprouvé

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    novembre 2006
    Messages
    317
    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 : 317
    Points : 1 007
    Points
    1 007

    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 habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    octobre 2013
    Messages
    105
    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 : 105
    Points : 158
    Points
    158

    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
    11 802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 802
    Points : 20 021
    Points
    20 021

    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