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

2D Java Discussion :

Impression d'un graphe : Quelle est la méilleur méthode


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 511
    Par défaut Impression d'un graphe : Quelle est la méilleur méthode
    Bonjour à tous

    je développe une application qui affiche un document sous forme de pages. le dessin des pages est constitué d'élements JGraph.

    L'application fonctionne bien, mas maintenant je souhaite imprimer mes pages.

    J'ai testé deux méthodes qui sont basés toutes les deux sur les interfaces Printable et Pageable de java.
    - La première consiste a dessiner dans un BufferedImage puis imprimer cette image
    - Pour la seconde méthode , je redessine le graphe avec la référence du graphique passé par la méthode print.

    Dans les deux cas, je suis confronté à des problèmes mémoires dans l'impression du document.

    Existe t il d'autres méthodes pour imprimer sous JAVA, car d'après ce que j'ai sur les forum, java n'est pas vraiment adapté pour l'impression

    merci d'avance pour vos conseils

    Cordialement
    Page sur Developpez : http://pbriand.developpez.com

  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
    Si tu as des erreurs mémoire, commences par profiler ton application avec un outil comme visualVM pour voire d'où vient spécifiquement cette sur-occupation de la mémoire.

    Secondement une image au sens Java (BufferedImage par exemple) est stockée en mémoire sous une forme non compressée (tout simplement pour avoir accès au raster &cie). De fait une image occupe un paquet d'espace. De fait si ton image est vraiment grosse il est possible que tu dépasses la limite de mémoire affectée à la JVM en standard (de souvenir 64Mo) De fait il te faudra peut être changer le paramètre de lancement de la JVM pour ton appli:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Xmx128M -jar mon.jar
    pour porter la limité mémoire de la JVM à 128Mo.

  3. #3
    Membre émérite
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 511
    Par défaut
    Bonjour sinok

    merci pour tes infos.

    Je lancer l'application avec les paramètres suivants

    je vais suivre la piste de visualVM pour voir d'ou vient mon problème.
    Je peux imprimer sans problème une page, mia splus j'imprime de pages plus cela à tendance à planter. je dois donc converser certaines données alors que je n'en ai plus besoins

    Cordialement
    Page sur Developpez : http://pbriand.developpez.com

  4. #4
    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
    Citation Envoyé par briand patrick Voir le message
    Bonjour sinok

    Je peux imprimer sans problème une page, mia splus j'imprime de pages plus cela à tendance à planter. je dois donc converser certaines données alors que je n'en ai plus besoins
    Tu as probablement une fuite de mémoire qui traine quelque part, comme une image non déréférencée ou ce genre de chose.

    VisuaVm te sera très utile pour savoir d'où vient cette fuite.

    Des tutos sur l'outil: http://java.sun.com/javase/6/docs/te...lvm/index.html

  5. #5
    Membre émérite
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 511
    Par défaut
    Bonjour Sinok

    J'ai pu tracer mon appli avec VirtualVM. TU as raison, c'est bien une fuite mémoire (peut être 2) qui font planter mon appli, voici ma trace de ma heap

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    sun.awt.image.IntegerInterleavedRaster#289       2 644 917
    int[]#1854                                                     2 644 592
    sun.awt.image.IntegerInterleavedRaster#307       2 539 241
    int[]#1992                                                     2 538 916
    sun.awt.image.IntegerInterleavedRaster#290       2 510 681
    int[]#1947                                                     2 510 356
    sun.awt.image.IntegerInterleavedRaster#302       2 500 325
    sun.awt.image.IntegerInterleavedRaster#321       2 500 108
    int[]#1952                                                     2 500 000
    int[]#2116                                                     2 499 784
    En fait, à chaque fois que je dessine une image, je recrée un tampon
    pour le dessin. Par contre pour les int[], je ne sais pas ce que cela peut être

    je vais tenter de trouver une parade à ce problème qui vient peut être d'une mauvaise utilisation de la libraire JGraph

    Cordialement
    Page sur Developpez : http://pbriand.developpez.com

  6. #6
    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
    Les int[] correspondent probablement à la représentation de l'image. En effet une image peut être représentée sous la forme d'un tableau d'entier (cf décalage de bits avec les opérateurs >> & cie).

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/07/2008, 12h29
  2. Réponses: 2
    Dernier message: 14/03/2008, 09h57
  3. [HTML] quelle est la meilleure méthode pour changer la langue d'un site?
    Par poupouille dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/02/2008, 12h17
  4. Réponses: 12
    Dernier message: 10/08/2006, 09h44
  5. Réponses: 20
    Dernier message: 27/06/2006, 17h42

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