Ci-dessous mon code:

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();
 
            }
    }
  }
}
J'ai augmenté la memoire du JVM pour 512MO mais encore j'ai une erreur:
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