Précédent   Forum du club des développeurs et IT Pro > Java > Interfaces Graphiques en Java > SWT/JFace
SWT/JFace Forum d'entraide pour les API SWT/JFace. Avant de poster -> FAQ SWT/JFace
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2012, 13h42   #1
niikkko
Invité de passage
 
Inscription : 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
niikkko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 14h11   #2
Gueritarish
Modérateur
 
Avatar de Gueritarish
 
Homme Marc
Développeur Java
Inscription : mai 2007
Messages : 1 567
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 28
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 567
Points : 3 430
Points : 3 430
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.

Le 5 et 6 juin à Toulouse, la première EclipseCon France !
Gueritarish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 15h29   #3
niikkko
Invité de passage
 
Inscription : août 2012
Messages : 10
Détails du profil
Informations forums :
Inscription : août 2012
Messages : 10
Points : 2
Points : 2
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.
niikkko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 16h09   #4
Gueritarish
Modérateur
 
Avatar de Gueritarish
 
Homme Marc
Développeur Java
Inscription : mai 2007
Messages : 1 567
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 28
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 567
Points : 3 430
Points : 3 430
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.

Le 5 et 6 juin à Toulouse, la première EclipseCon France !
Gueritarish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 17h12   #5
sinok
Modérateur
 
Avatar de sinok
 
Inscription : août 2004
Messages : 8 644
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2004
Messages : 8 644
Points : 12 452
Points : 12 452
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.
sinok est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h05.


 
 
 
 
Partenaires

Hébergement Web