OutOfMemoryError beim Einlesen einer XML-Datei

Status
Nicht offen für weitere Antworten.

Paladin

Bekanntes Mitglied
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.

Code:
	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
 
ja, mit -Xmx starten

oder mit SAX

oder es giblt auch die möglichkeit, einen mit Xpath spezifizierten Teil des Dokuments einzulesen
 
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.
 
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
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben