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

Format d'échange (XML, JSON...) Java Discussion :

out of memory [JDOM]


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre confirmé
    Homme Profil pro
    etudiant / developpeur
    Inscrit en
    Décembre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : etudiant / developpeur

    Informations forums :
    Inscription : Décembre 2009
    Messages : 131
    Par défaut out of memory
    Bonjour,


    j'utilise actuellement l'api jdom dans mon application pour me permettre de pouvoir lire des fichier xml puis traiter les infos et enfin reconstruire un autre xml.

    Dans l'ensemble mon application se résume a du traitement lourd dans j'avais déjà prévu et donc j'avais augmenter la mémoire maximal a 900mo , et oui !
    bref et depuis plus jamais de problème de mémoire même avec des xml assez énorme.

    et depuis je revois un peu la structure du programme donc changer certaine classe ect, et depuis ce matin j'ai un problème assez étrange lorsque j'exécute mon appli par l'ide (netbean) aucun problème , ma plus grosse base de xml met a l'épreuve mon appli , c tres lent mais ca marche jusqu'au bout.
    Mais lorsque je compile et fait la meme chose par le jar directement lorsqu'il traite le plus gros xml d'entre eux (env 40mo) la j'ai un crash qui me sort l'exeption out of memory de jdom.

    j'ai pu voir a quel endroit de quel fonction se passe l'erreur , mais je ne vois pas pourquoi car je n'ai pas touché a cette fonction.

    :

    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
    public ArrayList<DocXml> parseFiles() throws JDOMException, IOException{
            getFiles();
            ArrayList<DocXml> listeObjet = new ArrayList<DocXml>();
            if (listFile ==null || listFile.get(0).canRead() == false) {
                errList.add("liste de fichier vide ou illisible \n");
                errList.add("list de fichier : "+listFile.size());
            } else {
                int sizeLi = listFile.size();
                ab.setInitBarre(0, sizeLi);
                sxb = new SAXBuilder();
                for (int i = 0; i < sizeLi; i++) {
                    ab.setEtatBarre(i);
                    File get = listFile.get(i);
                    ab.setLabelBarre(get.getName());
                    document = new Document();
                    System.out.println(path + get.getName());
                    document = sxb.build(new File(path + get.getName()));
                    racine = document.getRootElement();
                    DocXml newDoc = new DocXml();
                    newDoc.setName(get.getName());
                    newDoc.setRacine(racine);
                    newDoc.setDocument(document);
                    listeObjet.add(newDoc);
                    ab.setLabelBarre("");
                }
            }
            return listeObjet;
        }
    la classe DocXml contient juste ceci pour info :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class DocXml {
     
        private String name;
        private Document document;
        private Element racine;
    }

    voila si une personne a deja eu a faire a ca, sache que j'attends ici !

  2. #2
    Membre confirmé
    Homme Profil pro
    etudiant / developpeur
    Inscrit en
    Décembre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : etudiant / developpeur

    Informations forums :
    Inscription : Décembre 2009
    Messages : 131
    Par défaut
    Bon j'ai repérer 2 petite chose qui peuvent mettre la puce a l'oreille de certain :

    lorsque je lance mon application directement par le jar , le processus dans windows est : javaw.exe et l'application ne fonctionnera pas.

    alors que si je fait un fichier bat avec cette ligne :
    dedans : java -xmx1024 -jar monappli.jar
    la le processus est bien java.exe et le traitement va aller jusqu'au bout.

    alors deux question le fait que le processus soit javaw au lieu de java peut-il influer sur les paramètre de mémoire ?

    (pour information c'est bien le -xmx1024 qui assure le fonctionnement)

    alors pourquoi netbean ne tiens plus compte des paramètres de mémoire que j'ai déjà spécifier dans les propriété du projet.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    C'est quoi que tu appelles "lancer directement par le jar" ?

    Pour info, les paramètres de NetBeans sont des paramètres de NetBeans, pas des paramètres de Windows. Ils ne sont pas enregistrés dans les .jar construits... Puisqu'il n'y a pas de paramètre de ce genre dans les .jar.
    Un .bat, c'est bien, pour ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Homme Profil pro
    etudiant / developpeur
    Inscrit en
    Décembre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : etudiant / developpeur

    Informations forums :
    Inscription : Décembre 2009
    Messages : 131
    Par défaut
    quand je dit lancer directement par le jar , c'est double cliquer directement sur le fichier jar (mon appli apres compilation) pour l'executer au lieu de devoir utiliser un bat justement.

    Pour ce qui est des parametre de memoire oui ils sont bien dans netbean, ce qui devient mon dileme car dans les proprieter de mon application j'arrive a definir les parametre de memoire de la VM pour l'augmenter et bien faire tourner mon appli, mais je veux savoir si c'est possible de définir ce genre de paramètre dans l'application pour ne pas avoir a faire un fichier bat qui définisse les -Xms et -Xmx

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Je viens de te dire que non. (Et c'est assez chiant, je te l'accorde.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [XStream][String]out of memory
    Par Invité dans le forum Persistance des données
    Réponses: 8
    Dernier message: 10/01/2006, 14h52
  2. [C++] [gcc] out of memory
    Par fxp17 dans le forum GCC
    Réponses: 5
    Dernier message: 06/01/2006, 10h29
  3. [pb mémoire] out of memory d'eclipse
    Par Casp dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 12/05/2005, 16h39
  4. Out of memory
    Par shurato dans le forum ANT
    Réponses: 1
    Dernier message: 10/11/2004, 16h19
  5. [JBuilder 8] Out of memory problem ...
    Par keros dans le forum JBuilder
    Réponses: 2
    Dernier message: 08/09/2003, 19h03

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