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

Interfaces Graphiques en Java Discussion :

[Image]Liberation des ressources


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Par défaut [Image]Liberation des ressources
    Bonjour,

    Je développe un programme permettant de visualiser des photos sous forme de diaporama mais j'ai un gros probleme d'occupation mémoire.
    Je charge mes images avec les méthode de la classe ImageIO, je les affiche dans un JPanel, et dès qu'une image n'est plus affichée, je libère (ou plutot je pensais libérer) ses ressources en appelant la méthode flush et en mettant sa référence à null.
    Le probleme c'est que la mémoire n'est aboslument pas libérée et au bout d'une cinquantaine d'images j'ai systematiquement une OutOfMemoryError.

    Comment faire pour libérer correctement la mémoire occupée par une BufferedImage ??

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Garde la référence sur ta BufferedImage et sette la à null quand le besoin s'en fait sentir

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Par défaut
    ben oui c'est bien ce que je fais, dès que l'image n'est plus affichée, je la met à null.

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Par défaut
    j'ai essayé tout l'aprem en faisant des null, des flush, des dispose de partout, des appels explicite au gc et pas moyen, toujours cette conso mémoire qui augmente inexorablement!!

    je crois que je vais laissé tomber le java pour cette appli et repasser en C++ car en plus je trouve la classe ImageIO particulierement "moisie". C'est lent, ca consomme un max de mémoire sans jamais pouvoir la libérer et elle ne charge pas toujours correctement certains format d'image comme les gif animés.

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    On pourrais voir un peu de code (comment tu charges les images, comment tu les affiches, et comment tu les "libères").

    a++

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Par défaut
    Voila un extrait (j'ai mis que les parties qui concerne l'affichage des images)

    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
    36
     
    public class PanelImage extends JPanel
    {
        private BufferedImage image;
     
        public void setImage(String strChemin)
        {
            if(image != null)
            {
                image.flush();
                image = null;
            }
            try
            {
                image = ImageIO.read(new File(strChemin));
            }
            catch (IOException e)
            {
              ...
            }
        }
     
     
        protected void paintComponent(Graphics g)
        {
            super.paintComponent(g);
            ...
            if(image != null)
            {
                 g.drawImage(image,0,0, null);
            }
            ...
            g.dispose();
        }
     
    }

Discussions similaires

  1. Image issue des ressources de l'application
    Par rtg57 dans le forum Jasper
    Réponses: 2
    Dernier message: 14/05/2015, 07h42
  2. Image à partir des ressources
    Par Bernard B dans le forum Langage
    Réponses: 3
    Dernier message: 09/01/2012, 17h59
  3. Internationalisation d'image avec des ressources
    Par diab_olik dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 07/04/2010, 05h44
  4. Réponses: 4
    Dernier message: 14/10/2003, 08h58

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