Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Inscrit en
    août 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : août 2012
    Messages : 10
    Points : 2
    Points
    2

    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 :
    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
    Modérateur
    Avatar de Gueritarish
    Homme Profil pro Marc
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Nom : Homme Marc
    Âge : 30
    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 513
    Points
    3 513

    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
    Invité de passage
    Inscrit en
    août 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : août 2012
    Messages : 10
    Points : 2
    Points
    2

    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
    Modérateur
    Avatar de Gueritarish
    Homme Profil pro Marc
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Nom : Homme Marc
    Âge : 30
    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 513
    Points
    3 513

    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
    Modérateur
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 756
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 756
    Points : 11 827
    Points
    11 827

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •