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.
:
la classe DocXml contient juste ceci pour info :
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; }
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 !
Partager