JAXB - unmarshal OutOfMemory: Java Heap Space

Ich versuche momentan, um JAXB verwenden zu unmarshal XML-Datei, aber es scheint, dass die XML-Datei ist zu groß (~500mb) für die unmarshaller zu handhaben. Ich erhalte java.lang.OutOfMemoryError: Java heap space @

Unmarshaller um = JAXBContext.newInstance("com.sample.xml");
Export e = (Export)um.unmarhsal(new File("SAMPLE.XML"));

Ich vermute, dies ist, weil es versucht, öffnen Sie die große XML-Datei als Objekt, sondern die Datei ist einfach zu groß für die java-heap-space.

Gibt es eine andere, eher "Speicher-effiziente" Methode der Parsen großer XML-Dateien ~ 500mb? Oder vielleicht ein unmarshaller Eigentum, die kann mir helfen, Griff der großen XML-Datei?

Hier ist, was mein XML sieht aus wie

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- -->
<Export xmlns="wwww.foo.com" xmlns:xsi="www.foo1.com" xsi:schemaLocation="www.foo2.com/.xsd">
<!--- --->
<Origin ID="foooo" />
<!---- ---->
<WorkSets>
   <WorkSet>
      <Work>
         .....
      <Work>
         ....
      <Work>
      .....
   </WorkSet>
   <WorkSet>
      ....
   </WorkSet>
</WorkSets>

Möchte ich unmarshal in den WorkSet-Ebene, noch in der Lage zu Lesen, durch all die Arbeit, die für jeden WorkSet.

InformationsquelleAutor TyC | 2011-11-01
Schreibe einen Kommentar