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

SWT/JFace Java Discussion :

Consommation mémoire / JFreechart / java.awt.image.BufferedImage


Sujet :

SWT/JFace Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Consommation mémoire / JFreechart / java.awt.image.BufferedImage
    Bonjour à tous

    Dans une vue EclipseRCP, j'alimente une frame ( crée comme cela : mFrame = SWT_AWT.new_Frame(compositeChart) )
    par un chartPanel d'un composant JFreechart:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     	public void setCP( ChartPanel lcp) {
      		mFrame.removeAll();
      		if (lcp != null) {
      			mFrame.add(lcp);
      			mFrame.validate();
    			mFrame.setVisible(true);
    		}
                               mFrame.repaint();
    }
    A chaque fois que j'appelle cette procédure, un objet java.awt.image.BufferedImage est créé et consomme environ 1.8M en mémoire ( merci MAT !)
    Si je veux donc visualiser x graphiques JFreechart différents dans cette vue Eclipse, j'ai en memoire x objets java.awt.image.BufferedImage

    Je m'arrache les cheveux
    Je ne vois pas pourquoi.

    toute suggestion est bienvenue

    Merci d'avance

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Une petite question, as-tu essayé d'utiliser les composants SWT de JFreeChart plutôt que de passer par le pont SWT - AWT?
    Si tu as téléchargé le zip depuis le site de JFreeChart, alors dans le dossier lib tu as un jar: jfreechart-1.0.14-swt.jar qui contient un ChartComposite.

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Salut Gueritarish,

    Effectivement, quand j'utilise ChartComposite, la consommation mémoire baisse sensiblement. Ouf!

    Par contre, les graphes générés sont beaucoup moins léchés... Est-ce lié ?

    N.

  4. #4
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Citation Envoyé par niikkko Voir le message
    Par contre, les graphes générés sont bcp moins léchés... Est-ce lié ?
    Aucune idées
    Si un expert JFreeChart passe sur le sujet, il pourra te renseigner, mais pour ma part. Je m'y connais pas des masses.
    Sinon, n'hésite pas à passer le sujet en résolu si cela te convient comme solution.
    Pas de questions technique par MP, les forums sont là pour ça.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par niikkko Voir le message
    A chaque fois que j'appelle cette procédure, un objet java.awt.image.BufferedImage est créé et consomme environ 1.8M en mémoire ( merci MAT !)
    Le ChartPanel utilise probablement une BufferedImage pour mettre en place une sorte de double buffering.

    Or pour utiliser une image dans un programme, il faut l'avoir en version non encodée, une BufferedImage prend systématiquement beaucoup plus d'espace que sa version encodée (PNG, JPEG & cie). Suivant la taille définie par JFreeChart, ça peut consommer.

    Par contre, dès lors que l'image est correctement libérée, je en vois pas trop le problème dans les 1,8M de taille en mémoire... J'imagine bien que tu ne vas pas instancier 100 charts en parallèle.

    Et 10 charts te boufferont 20M de mémoire, pas de quoi faire exploser ton XMX.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

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

Discussions similaires

  1. Obtenir une java.awt.Image à partir d'un ShapeFile.
    Par grunt2000 dans le forum SIG : Système d'information Géographique
    Réponses: 0
    Dernier message: 23/11/2010, 13h00
  2. Réponses: 2
    Dernier message: 30/04/2008, 12h30
  3. la classe java.awt.image.Raster
    Par Methode dans le forum 2D
    Réponses: 1
    Dernier message: 07/10/2007, 13h20
  4. java.awt.Image à partir d'un string
    Par lex13 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 02/08/2007, 11h42
  5. java.awt.Image -> byte[]
    Par keil dans le forum 2D
    Réponses: 7
    Dernier message: 28/09/2005, 14h38

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