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

AWT/Swing Java Discussion :

pb memoire et performence swing netbeans


Sujet :

AWT/Swing Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 1
    Points
    1
    Par défaut pb memoire et performence swing netbeans
    J aimerai savoir comment on peut ameliorer la performence dune applcation swing car la jai dev un outil d import export utilsant des resulsate sql...sous eclipse l excecution me prend 5 min et la sous netbeans (que j ai prefereee pour l interface) ca mets beaucouop trop de temps a se lancer....20 min environ ...
    Et de surcroit ca plante avec un probleme memoire ci dessous...
    SVP aidez moi........?

    Merci
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
     
    compiling 1 source file to C:\Documents and Settings\tinissi.agbobloua\KTPTools\build\classes
    compile-single:
    run-single:
    Connection en cours...
    Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
            at java.util.Arrays.copyOf(Arrays.java:2882)
            at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
            at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
            at java.lang.StringBuilder.append(StringBuilder.java:203)
            at ktptools.Parsing.lineQueue(Parsing.java:102)
            at ktptools.Parsing.createTablechampsconcater(Parsing.java:274)
            at ktptools.JdbcCheckup.export(JdbcCheckup.java:337)
            at ktptools.ktpInterface.jButtonExportActionPerformed(ktpInterface.java:1005)
            at ktptools.ktpInterface.access$500(ktpInterface.java:25)
            at ktptools.ktpInterface$6.actionPerformed(ktpInterface.java:214)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
            at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
     
     
           at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
            at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41)
            at java.awt.image.Raster.createPackedRaster(Raster.java:458)
            at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
            at sun.awt.image.SunVolatileImage.getBackupImage(SunVolatileImage.java:214)
            at sun.awt.image.VolatileSurfaceManager.getBackupSurface(VolatileSurfaceManager.java:247)
            at sun.awt.image.VolatileSurfaceManager.initialize(VolatileSurfaceManager.java:103)
            at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:66)
            at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:95)
            at java.awt.GraphicsConfiguration.createCompatibleVolatileImage(GraphicsConfiguration.java:284)
            at java.awt.GraphicsConfiguration.createCompatibleVolatileImage(GraphicsConfiguration.java:185)
            at javax.swing.RepaintManager.getVolatileOffscreenBuffer(RepaintManager.java:919)
            at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1298)
            at javax.swing.RepaintManager.paint(RepaintManager.java:1128)
            at javax.swing.JComponent._paintImmediately(JComponent.java:5070)
            at javax.swing.JComponent.paintImmediately(JComponent.java:4880)
            at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:723)
            at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:679)
            at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:659)
            at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
            at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

  2. #2
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    Pour le problème de mémoire surement que eclipse et netbeans n'alloue pas la meme mémoire .. ca pourrais expliqué le problème de temps aussi mais la je ne suis pas sure ...

    Par contre si niveau interface tu parle interface de ton programme moi je crée avec netbeans mais je programme tout le reste sous eclipse c'est pas un problème ^^!

    mais tu doit vraiment manipulé de grosse donnée pour faire exploser la memoire avec des ResultSet !!!! (et pour la vitesse à tu pensé aux index sur ta base ?)
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Ben en fait je code sous eclipse et apres je copie colle le code sous eclipse pour l integrer sous netbens...mais que veut tu dire par le fait qu ils alloue pas la meme memoire? qund je lance l application ben ecplise est pas ouvert...ou alors tu veux dire allocation memoire minimal a eclipse et netbeaans?

    Ben je manipue des table ayant plus de 300 chamnps...et y a pas malk de table environ 100 voir plus ca depend des requete.....
    Et puis ben la table est standarise...donc je sais pas si les index soint creet automaiquement ou pas...en effete ca pourrai accelerer les traitement non?

    Par contre avec swing comment tu desalloue la memoire garbage colector?gc? dispose()? ce n est pas automatise?

    Merci de ton aide

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Faudrait qu'on en sache plus sur ton application.
    Est-ce que tu ne charges pas trop de données en même temps, trop de requêtes vers la base ?
    Si tes requêtes renvoient trop de données, tu pourrais peut-être limiter le nombre de lignes retournées et rappeler à la demande tes requêtes pour avoir les lignes suivantes.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Ben j ai creer deux resulstatement un pour faire des insertion et l autre pour faire des update qui sont les deux formater....donc a chaque requete un seul resultstatement est traite et ferme....
    a la fin...le fait de les fermer libere la memoire non? ou je dois la liberer explicitement?
    Voici un bout du code....ou rset est le resultstyatement creer pluis haut a partir d un statement qui lui decoull d une connection a la base de donnee..
    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
    37
    38
    39
    40
    41
     
     try
           {
    while (rset.next()|| rset.isBeforeFirst())
                        {
    ......
    traitemnt des resulstatement.....
     }
     
              DatabaseMetaData dmd = conn.getMetaData();
     
            //récupération des informations
              String nomBase = dmd.getDatabaseProductName();
              String versionBase = dmd.getDatabaseProductVersion();
     
            //affichage des informations de la database
              System.out.println("Nom de la base = "+nomBase);
                 System.out.println("Version de la base = "+versionBase);
     
              System.out.println("Your JDBC installation is correct.");
     
           }
     
           catch(SQLException  e)
           {
               System.out.println("Erreur : "+e.getMessage());
           }
     
          /* finally
           {
               System.out.println("Bloc Finally\n");
     
           }*/
     
       createImportationFile();
       //Fermeture des result Statement
       this.rset.close();
     
       //this.rset_update.close();
     
       }

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tes selects te renvoient combien de lignes ?

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    ben ca depend des table...ca va de 0 a 200 vboir 300 ligne aui son traite...ca depend des tables saisi etc...

  8. #8
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Je comprends bien que c'est variable, c'est pour avoir un ordre d'idée.
    Si tes requêtes te renvoient 3 millions de lignes, ça peut expliquer le plantage mémoire.

    Faudrait voir ce que ces 200-300 lignes représentent comme poids en mémoire.

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    ah ok je vais voir sur cette piste...et comment puis je voir le poid des ces requete?
    Part contre comment faire pour liberer la memoire des requete ou de la memoire?car je me dis quer peut etre qu il s agit peut etre du fait que je libere pas assez la memoire...

  10. #10
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ben "normalement", le garbage collector se charge de libérer la mémoire.
    Ceci dit, il libère les objets qui ne sont plus référencés, donc si tu récupères 3 millions de lignes et que tu les affectes à des objets Java, la mémoire sera saturée avant que le GC ne puisse libérer quoi que ce soit.

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Mais pourquoi alors sous eclipse quand je lance y as pas cette erreur mais sous netbeans j ai cette erreuir...
    Seul difference c est que sous eclipse j ais l interface alors que sous netbeans c est avec...

  12. #12
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    et la fin de la phrase ?
    parce que là, j'ai pas compris grand chose à ton dernier commentaire.

  13. #13
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    En quand je lance la commande sous eclipse ben elle met 5 min et je n ai pas d erreur.
    Par contre quand je lance cette meme fonction sous netbeans et cette fois ci avec une interface swing. La fonction se lance suite a un clik sur un bouton. Et la j ai des probleme memoire.

  14. #14
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tu affiches comment les résultats dans Eclipse ?
    Par la console, à base de System.out.println() ?

  15. #15
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    oui c est cela... avec System.out.println() puis je recupere avec des geString

  16. #16
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    et dans ton interface Swing, tu traites comment tes données ?

  17. #17
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Je les traite de la meme maniere que sous eclipse sauf que je fait un action performed sur le bouton puis je fais un try...catch...contenant la fonction d excecution...

  18. #18
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tu veux dire que tu fais aussi des System.out.println pour afficher les résultats ?
    Tu ne les affiches pas dans un composant ?

  19. #19
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    oui je fais un system.out.println mais je les affiche dans un Jtext Area..en faisant une redirection de sortie standard

  20. #20
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Montre nous le code de cette partie.

Discussions similaires

  1. [Swing/Netbeans] Problème pour organiser l'interface
    Par ggvert dans le forum Débuter
    Réponses: 2
    Dernier message: 27/05/2010, 23h29
  2. Performance de Netbeans
    Par david71 dans le forum NetBeans
    Réponses: 2
    Dernier message: 15/04/2010, 00h56
  3. [Performance Swing] Deplacement de JInternalFrame très lent
    Par Widiwi dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 12/02/2009, 00h38
  4. Interface Graphique swing + netbeans
    Par bouillet dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 09/05/2008, 12h54
  5. Pbl Import de projet Swing Netbeans vers Eclipse
    Par olivier.clain dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 09/05/2006, 08h31

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