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

Langage Java Discussion :

OutofMemory heap java


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 75
    Par défaut OutofMemory heap java
    salut,

    suite a mon probleme sur les arbres JTree que jai reussi a resoudre grace a vos aides.....je me retrouve avec un autre probleme.

    Donc lorsque je cree mon arbre avec des donnees qui sont dans un fichier *.obj (faisant 5Mo) mon arbre se construisait asses rapidement.

    Mais malheureusement quand j'essaie de faire la meme chose avec un fichier *.obj qui fait 30Mo la machine virtuelle de java me dit
    Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space

    Donc jai essayer d'allouer plus de memoire a la VM Java avec la commande -Xmx128m mais ca ne suffit toujours pas......

    Quelqu'un pourrait maider s'il vous plait?

    merci

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    essaye de mettre plus de mémoire ? -Xmx256m ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 75
    Par défaut
    slt,

    jai meme essaye de mettre -Xmx512m mais ca n etoujours pas fonctionner.........

    Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
    at java.lang.String.codePointAt(
    String.java:589)
    at java.lang.String.toLowerCase(
    String.java:2213)
    at java.lang.String.toLowerCase(
    String.java:2277)
    at exemples.XmlLogLine.isStart(
    XmlLogLine.java:283)
    at exemples.TreeDemo.createNodes(
    TreeDemo.java:187)
    at exemples.TreeDemo.createNodes(
    TreeDemo.java:190)

    at exemples.TreeDemo.createNodes(
    TreeDemo.java:190)
    ....................

    donc des idees les gars, svp...

  4. #4
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Attention, il y a une différence entre StackOverflowError et OutOfMemoryError !
    Es-tu sûr que tu n'as pas une récursion infinie ? (une méthode A qui appelle une méthode B qui appelle A qui appelle B ...)
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 75
    Par défaut
    en fait quand je navais pas alloue assez de memoire, VM java mindiquait bien OutOfMemory mais depuis que je lui ai alloue -Xmx512m, il m'indique cet erreur la : StackOverFlowerror.

    voici mon code:

    private DefaultMutableTreeNode createNodes(Iterator i,DefaultMutableTreeNode racine) {
    DefaultMutableTreeNode noeud =
    null;
    XmlLogLine tmp =
    new XmlLogLine();

    while(i.hasNext()){

    tmp = (XmlLogLine)i.next();
    racine.setAllowsChildren(
    true);
    noeud =
    new DefaultMutableTreeNode(tmp.getLog_method());

    if(tmp.isStart() && !(tmp.isStartStop())){

    racine.add(noeud);
    createNodes(i,noeud);
    }
    elseif(tmp.isStop() && !(tmp.isStartStop())){
    racine=(DefaultMutableTreeNode)racine.getParent();
    }
    elseif(tmp.isStartStop()){

    racine.add(noeud);
    }
    }
    return racine;

    }

    quand je lexecute pas a pas il allere de sexecuter mais je ne peux pas savoir si il fait appel a des fonctions infini car le fichier fait 50Mo et il y a au moins 100 000 lignes dedans....a debugger une par une cest lourd quand meme...

    mais la meme fonction marche tres bien sur le fichier de 5Mo...cest ca que je ne comprend pas...

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 75
    Par défaut
    une petite idee les gars.............

  7. #7
    NoP
    NoP est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 35
    Par défaut
    moi j ai une idée : essaye de trouver un meilleur algo.

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 75
    Par défaut
    ouai...
    cest ce que jai essaye de faire mais toujours le meme probleme ...
    a moins que mon algo soit toujours aussi complique...

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 75
    Par défaut jtree
    jai change mon algo, le voici.....

    private
    DefaultMutableTreeNode createNodes(Iterator i,DefaultMutableTreeNode racine) {
    DefaultMutableTreeNode noeud =
    null;
    XmlLogLine tmp =
    null;


    while(i.hasNext()){

    tmp = (XmlLogLine)i.next();
    racine.setAllowsChildren(
    true);
    noeud =
    new DefaultMutableTreeNode(tmp.getLog_method());

    if(tmp.isStart() && !(tmp.isStartStop())){

    racine.add(noeud);
    racine=noeud;
    }
    elseif(tmp.isStop() && !(tmp.isStartStop())){
    racine=(DefaultMutableTreeNode)racine.getParent();
    }
    elseif(tmp.isStartStop()){

    racine.add(noeud);
    }
    }
    return racine;

    }

  10. #10
    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
    Une idée toute simple serait de ne charger que des bouts ton JTree selon les actions de l'utilisateur: quand tu code ceci pour un explorateur de fichiers par exemple tu ne vas pas prendre en compte directement l'intégralité du disque mais simplement les niveaux visibles puis jouer sur les action utilisateurs

  11. #11
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 75
    Par défaut jtree
    salut,




    ben en fait au final mon interface laisse le choix a lutilisateur de saisir une date de debut et de fin......(et larbre saffichera seulement avec les donnees de cette borne.....comme pour le moment les elements de la collection ne contiennent pas de champ date alors jaffiche toute larborescence......mais a la fin jafficherais une partie de larbre selon la saisie del utilisateur

  12. #12
    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
    En fait je pensais à quelquechose d'autre: construire ton arbre en fonction des expensions de noeuds (si ton arbre est étendu au niveau n il te suffit d'avoir le niveau n+1 en mémoire, pas tout le restant de la branche)
    A chaque expension d'un noeud n, tu auras déja le niveau n+1 mémoire il te suffira donc de charger le niveau n+2
    De cette façon tu réduit au minimum la consommation mémoire nécessaire d'un coup

  13. #13
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 75
    Par défaut call graph
    ah oui je comprends mieux ce que tu veux dire........
    par exemple au depart jaffiche que la racine et je garde en memoire tous les fils de la racine..........et cest tout

    ensuite si lutilisateur clique sur la racine,alors jaffiche tous les fils et garde en memoire tous les petits fils.......puis sil clique sur un des fils ,qui est un noeud, jaffiche tous les petits fils.....etc


    mais ca me parait complique a mettre en oeuvre non???

  14. #14
    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
    Pas plus que ça
    Tu ajoute un TreeExpansionListener à ton JTree, ceci associé au TreeModel qui va bien (normalement un DefaultTreeModel suffit amplement) dans lequel tu auras chargé les informations de base et auquel tu ajouteras les noeuds voulus au moment des expansions......
    (Normalement le DefaultTreeModel prévient automatiquement le JTree de se mettre à jour)

  15. #15
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 75
    Par défaut
    pour creer mon arbre jai utilise DefaultMutableTreeNode donc je ne sais pas si ca peut marcher avec ca.....


    TreeExpansionlIstener cest une interface????

Discussions similaires

  1. Comment augmenter le heap Java?
    Par rawasi dans le forum Général Java
    Réponses: 13
    Dernier message: 21/05/2012, 10h21
  2. outOfMemory java heap size
    Par flora806 dans le forum Langage
    Réponses: 4
    Dernier message: 17/10/2007, 10h55
  3. OutOfMemory en java
    Par tarik1099 dans le forum Général Java
    Réponses: 1
    Dernier message: 05/05/2007, 13h04
  4. outOfMemory Java heap size : cache configuration ?
    Par will82 dans le forum Hibernate
    Réponses: 4
    Dernier message: 23/08/2006, 11h47

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