Ci-dessous mon code:
J'ai augmenté la memoire du JVM pour 512MO mais encore j'ai une erreur:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.helpers.XMLReaderFactory; public class SAXFilterInFile { public static void main(String[] args) throws Exception { if (args.length != 1) { System.err.println("Usage: java SAXFilter XML_FileName.xml"); System.exit(-1); } new SAXFilterInFile(args); System.gc(); } public SAXFilterInFile(String[] args) throws SAXException, IOException { XMLReader parser = XMLReaderFactory.createXMLReader(); // should load properties rather than hardcoding class name parser.setContentHandler(new PeopleHandler()); parser.parse(args[0]); } class PeopleHandler extends DefaultHandler { boolean conceptui = false; boolean conceptname = false; public void startElement(String nsURI, String localName, String rawName, Attributes attributes) throws SAXException { // Consult rawName since we aren't using xmlns prefixes here. if (rawName.equalsIgnoreCase("conceptui")) conceptui = true; if (rawName.equalsIgnoreCase("conceptname")) conceptname = true; } public void characters(char[] ch, int start, int length) { try { BufferedWriter out = new BufferedWriter(new FileWriter("Testing1.txt",true)); if (conceptui) { out.write("ConceptUI: " + new String(ch, start, length) + " , "); System.gc(); conceptui = false; } else if (conceptname) { out.write("ConceptName: " + new String(ch, start, length)); out.newLine(); System.gc(); conceptname = false; } out.close(); } catch (IOException e) { System.out.println("IOException:"); e.printStackTrace(); } } } }
OutOfMemory: Java Heap space
J'ai forcé le Garbage Collector aussi la meme erreur, est-ce je lance bien le garbage collector dans mon code? Si non ou il faut le placer?
Je parse un fichier xml de 450MO sur une machine ayant 1GO de memoire.
Merci d'avance pour votre aide c'est assez urgent![]()
Partager