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

  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 819
    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 819
    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 819
    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 819
    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

  7. #7
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 43
    Par défaut
    exact
    il me semble qu'en diminuant la taille de ma JFrame 3D je peux relancer autant de fois que je veux.
    Je vais donc de voir augamenter la mémoire alloué à eclipse!!
    seulement je ne vois pas ou mettre cette ligne de code
    [QUOTE][
    java -Xmx256m taClasse
    /QUOTE]
    merci

  8. #8
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    dans eclipse tu dois avoir, dans les propriétés de ton "Run application" (sous JCreator c'est ca) , parameters ou tu peux mettre ton classpath tout ca... Enfin sous JCreator c'est ca... Faut chercher un peu dans la config d'eclipse on vous mache pas tout non plus

  9. #9
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 43
    Par défaut
    si je me trompe pas et si mes sources sont bonnes se n'est pas eclipse qui gère la mémoire. J'ai souvenir de ca.
    Quelqu'un put il me dire comment modifier la mémoire allouer à mon programme sachant que je programme sur Eclipse et sous Windows...

    merci d'avance

  10. #10
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    c'est eclipse qui gere les parametres que tu mets à l'execution puisque tu executes a partir d'eclipse, cherche dans tes parametres où ajouter -Xmx256m

  11. #11
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    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 819
    Par défaut
    Ca devient de l'assistanat ce forum....

    Il y a une aide très bien faite dans Eclipse, ça serait cool de chercher un peu dedans...

    Dans le menu, tu cliques sur "Run", puis "Run...", tu choisis "Java application", tu sélectionnes ta main class, tu cliques sur l'onglet "(x=) arguments", et là tu rentres les arguments, en l'occurence -Xmx256m (dans la fenêtre VM arguments) (et je le répète, tu changes le 256 si tu veux autre chose que 256 Mo de mémoire allouée)

    En plus je ne bosse même pas avec Eclipse... c'est dire si c'était dur à trouver...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  12. #12
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 43
    Par défaut
    merci ca fonctionne
    en fait je suis dans une école d'ingénieur et on a un réseau et malheureusement delui-ci m'empêche d'accéder au site de l'aide d'ecclipse.
    J'ai cherché sur le net deux heures et excusez moi je n'ai pas intuité qu'il fallait faire cela!!
    merci tout de meme pour l'aide.

  13. #13
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    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 819
    Par défaut
    C'est vrai que c'est une aide en ligne... tu es excusé alors!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  14. #14
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    à moitié !!
    *ne va rien lacher*
    Tu aurai pu chercher par toi meme ^^

+ 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