Announcement

Collapse
No announcement yet.

OutOfMemory bei grossen XML Input

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • OutOfMemory bei grossen XML Input

    Hallo,

    ich erzeuge aus einer XML Datei ein DOM-XML-Objekt auf diese Weise:

    Code:
    Code:
    File curFile = new File(myFilePath);
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(new FileInputStream(curFile));
    DOMSource domXml = new DOMSource(document);
    Das funktioniert gut mit kleineren XML-Files. Wenn ich eine XML so um die 10 MB einlese bekomme ich OutOfMemory exception an der stelle Document document = builder.parse(new FileInputStream(curFile));

    Kann ich hier etwas tun? Soll ich die XML-Datei irgendwie anders in ein DOMSource laden, damit es klappt?

    hier der Stacktrace der Exception:

    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at com.sun.org.apache.xerces.internal.dom.DeferredDoc umentImpl.createChunk(Unknown Source)
    at com.sun.org.apache.xerces.internal.dom.DeferredDoc umentImpl.ensureCapacity(Unknown Source)
    at com.sun.org.apache.xerces.internal.dom.DeferredDoc umentImpl.createNode(Unknown Source)
    at com.sun.org.apache.xerces.internal.dom.DeferredDoc umentImpl.createDeferredTextNode(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.Abstrac tDOMParser.characters(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumen tFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Co nfiguration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Co nfiguration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLPars er.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.DOMPars er.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBu ilderImpl.parse(Unknown Source)
    at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
    ...

    Danke!!

    anarchipur

  • #2
    Würde mal die Größe des Heapspaces prüfen und ggf. erhöhen

    Xmx512M

    Wie oft willst du das Problem posten?
    Christian

    Comment


    • #3
      wich prüfe ich den Heap bei Java??

      Hi Christian,

      danke für den Tipp, und wie/wo prüfe den Heap?
      Bin neu im Thema und in diesem Forum, deswegen, dieser oder jener post-fehler.

      Danke und Viele Grüße,

      Serge

      Comment


      • #4
        Kann ich nicht sagen, hängt von deiner IDE ab
        Christian

        Comment


        • #5
          Nunja, da du deine IDE nicht sagen willst, scheint es ja nciht mehr wichtig zu sein
          Christian

          Comment


          • #6
            Hallo,

            ist es überhaupt notwendig das komplette XML-Dokument in
            den Speicher einzulesen? Auch mit etwas mehr Speicher wird
            er dir früher oder später wieder um die Ohren fliegen.

            Es gibt auch die Möglichkeit das XML-Dokument interativ zu durchlaufen,
            ohne das es (komplett) im Speicher gehalten wird.

            mfG Ralf

            Das Zauberwort hierfür ist "SAX".

            Comment


            • #7
              Da er ein DOM braucht, nützt das wahrscheinlich nicht viel, den er wird ja mit dem Ding arbeiten wollen....
              Christian

              Comment

              Working...
              X