# OutOfMemoryError beim Einlesen einer XML-Datei



## Paladin (19. Sep 2005)

Hi,

ich versuche gerade eine 20mb große xml-Datei auszulesen. Dabei bekomme ich allerdings sobald die xml Datei größer als 6mb wird einen OutOfMemoryError. Ich nehme mal an, dass man bei Eclipse irgendwo auch einstellen kann, dass es mehr Speicher benutzt und so der Fehler wahrscheinlich nicht mehr auftritt.
Aber:
Ich will das Programm als jar auf verschiedenen Rechnern laufen lassen und wenn ich aus meinem Programm eine jar Datei mache und diese dann auf dem Rechner ausführe bleibt mein Programm hängen sobald die xml Datei größer als 6mb wird. Liegt das mit dem Speicher vielleicht daran, dass mein einlese-quellcode schrott ist?

Hier ist ein Teil des quellcodes bei dem der Fehler auftritt.


```
class readXMLHeader implements Runnable {

		public void run() {
			SAXBuilder builder = new SAXBuilder();
			Document doc=null;
			String zeitraum="";
			String datum="";
			String typ="";
			String nr="";
			String nameuri = null;

			try {

				doc = builder.build(xmlpfad);  <== Hier tritt der Fehler auf

			} catch (JDOMException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 

			Element root = doc.getRootElement();	
			nameuri = root.getNamespaceURI();
```

Ich würde mich freuen wenn jemand von euch eine Idee zu diesem Problem hat.
Vielen Dank im voraus

Gruß

Paladin


----------



## Bleiglanz (19. Sep 2005)

such mal im Forum nach Xmx oder gleich nach OutOfMemoryError


----------



## DP (19. Sep 2005)

jdom kann mit dateien >6mb nicht umgehen.


----------



## Paladin (19. Sep 2005)

Gibt es eine Alternative mit der ich das Problem lösen kann?


----------



## Bleiglanz (19. Sep 2005)

ja, mit -Xmx starten

oder mit SAX

oder es giblt auch die möglichkeit, einen mit Xpath spezifizierten Teil des Dokuments einzulesen


----------



## Paladin (19. Sep 2005)

Dann habe ich den anderen Artikel wahrscheinlich falsch verstanden. Ich dachte mit XPath liest man aus einer Datenbank und nicht aus einem XML Dokument (Allerdings würde das mein Problem nicht lösen da ich sowieso das ganze XML Dokument einlesen muss).

Also wenn ich das richtig verstanden habe kann ich das >6mb Problem umgehen indem ich mein .jar File mit [Filename.jar] -Xmx1024 aufrufe.


----------



## Bleiglanz (19. Sep 2005)

möglicherweise 

hängt eben von der grösse ab...


----------



## Paladin (19. Sep 2005)

Hi Bleiglanz,

vielen Dank für die schnelle Hilfe. Mit der folgenden Kommandozeile konnte ich auch eine
20mb grosse XML Datei einlesen.

java -Xms128M -Xmx256M -cp XMLImport.jar;. Main

Größere Dateien hab ich bis jetzt nicht probiert ist aber sicher nur ne Speicherfrage.

Gruß

Paladin


----------

