JAXB - unmarshal OutOfMemory: Java Heap Space

Je suis en train d'essayer d'utiliser JAXB pour unmarshal un fichier XML, mais il semble que le fichier XML est trop grande (~500 mo) pour la unmarshaller à manipuler. Je reçois java.lang.OutOfMemoryError: Java heap space @

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

Je suppose que c'est parce que c'est en essayant d'ouvrir le grand fichier XML comme un objet, mais le fichier est trop volumineux pour le java heap space.

Est-il un autre plus "efficace en terme de mémoire" la méthode de l'analyse de gros fichiers XML ~ 500mo? Ou peut-être un unmarshaller propriété qui peut m'aider à gérer le grand fichier XML?

Voici ce que mon XML ressemble à

<?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>

J'aimerais unmarshal à la WorkSet niveau, tout en étant capable de lire tout le travail pour chaque WorkSet.

InformationsquelleAutor TyC | 2011-11-01