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

Interfaces Graphiques en Java Discussion :

recupération de ressources avec la méthode dispose()


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 43
    Par défaut recupération de ressources avec la méthode dispose()
    Bonjour à tous,

    Mon programme informatique permet la visualisation d'un volume 3d dans une JFrame écrite en Java 3D. Cette Jframe 3D est une variable d'instance de mon interface graphique. Cependant j'aimerais pouvoir changer de type de volume sans devoir relancer le programme à chaque fois.
    J'utilise donc la méthode dispose() qui ferme bien ma Jframe mais lorsque le programme essaye de réafficher une nouvelle Jframe 3D j'obtiens le message suivant:

    Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space

    Comment résoudre se problème?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    utilise System.gc() pour vider les objets inutilisés de la mémoire et si tu veux optimiser un peu affect la valeur "null" aux objets que tu n'utilisera plu pour être sur qu'ils soyent détruit.

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 43
    Par défaut
    J'ai essayé les méthodes proposées mais ca ne marche pas. je recois toujours la meme erreur voila le code en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void repeindre(){ 
      if(Interface3D!=null){
       Interface3D.dispose();
       System.gc();
       Interface3D=null;
        .....
       Interface3D=new Interface3D(f,color1,color2,color3,color4); 
       Interface3D.setVisible(true);
    merci

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut,

    C'est quoi exactement le volume 3d que tu passes en paramètre? C'est quelque chose de très lourd qui prend beaucoup de mémoire, ou un truc très léger?

    Si c'est très léger, il y a un soucis de déréférencement d'un objet... il doit falloir faire un dispose() ailleurs également...

    Si c'est lourd, essaie d'augmenter la taille du "heap" (en français, ça donne quoi?):

    pour allouer 256 Mo. Par défaut, c'est 64 Mo. N'en mets quand même pas plus que ce que tu as de RAM...

    Essaie ensuite de fermer/recharger ton modèle, et si ça plante encore au bout d'une certains nombre de fois, on en revient au problème du dispose() manquant...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 43
    Par défaut
    le volume3D que j'affiche dans la JFrame 3D est "très lourd". Mais je ne veux pas allouer plus de mémoire.
    Comment savoir ou il manque un dispose()??

  6. #6
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Citation Envoyé par fontaigo
    le volume3D que j'affiche dans la JFrame 3D est "très lourd". Mais je ne veux pas allouer plus de mémoire.
    Fait au moins le test pour savoir si ça vient d'une programmation foireuse ou si ça vient d'un défaut de mémoire...
    Si ça vient d'un défaut de mémoire, tu seras OBLIGé d'allouer plus de mémoire. Ou de revoir ton programme pour qu'il gère mieux tes objets...


    Citation Envoyé par fontaigo
    Comment savoir ou il manque un dispose()??
    Ben en cherchant...
    Tu traces ton programme, sa consommation mémoire, où tu affestes de "gros" objets, et si tu les libères bien...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

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

Discussions similaires

  1. Ressource avec icones couleur
    Par rtg57 dans le forum Delphi
    Réponses: 2
    Dernier message: 11/05/2007, 13h03
  2. Problème des ressources avec C::B
    Par Frouchy dans le forum Code::Blocks
    Réponses: 5
    Dernier message: 07/05/2007, 17h19
  3. Ressource avec GTK+ ?
    Par acryline dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 28/02/2007, 12h36
  4. Réponses: 2
    Dernier message: 09/01/2007, 10h21
  5. Réponses: 6
    Dernier message: 05/01/2007, 01h35

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