Ich habe ein Problem. Das Programm was ich habe läuft Klasse. Bis zu einem Punkt:
java.lang.OutOfMemoryError
Ich lese Textdateien aus einem ZIP in eine Datenbank ein. Das Programm ließt auch die ersten Dateien ein und irgendwann flupp.
Das Proggi ist wie folgt aufgebaut:
In abhängigkeit der Datei in dem ZIP (dort sind mehrere drin) wird eine jeweils andere Funktion aufgerufen.
Zum Beispiel
Hier gibt es einen StringBuffer für die SQL Anweisung und einige Strings.
Zum zerlegend er Textdatei gibt es eine eigene Klasse die den String zerlegt und mit der ich auf die String elemente zugreifen kann.
Ich zerlege den String und ordne jedes Element einer Variablen (String) zu. Anschließend baue ich den StringBuffer zusammen und schicke die Anfrage an die DB. Dafür gibt es eine eigene Funktion die wie weiter unten beschrieben ist aufgebaut ist.
Wo ist das Problem? Wie bekomme ich raus was mir den Speicher zuballert? Da die Strings in der Funktion datei1 nur einmal deklariert und immer wieder überschrieben werden kann ich mir nicht vorstellen das es diese sind. Vielleicht irgendwas in der todb Funktion? Auch die Klasse zum zerlegen der Strings wird nur einmal in der Funktion datei1 deklariert und dann für jede Zeile überschrieben.
java.lang.OutOfMemoryError
Ich lese Textdateien aus einem ZIP in eine Datenbank ein. Das Programm ließt auch die ersten Dateien ein und irgendwann flupp.
Das Proggi ist wie folgt aufgebaut:
In abhängigkeit der Datei in dem ZIP (dort sind mehrere drin) wird eine jeweils andere Funktion aufgerufen.
Zum Beispiel
Code:
function datei1{
....
}
Hier gibt es einen StringBuffer für die SQL Anweisung und einige Strings.
Zum zerlegend er Textdatei gibt es eine eigene Klasse die den String zerlegt und mit der ich auf die String elemente zugreifen kann.
Ich zerlege den String und ordne jedes Element einer Variablen (String) zu. Anschließend baue ich den StringBuffer zusammen und schicke die Anfrage an die DB. Dafür gibt es eine eigene Funktion die wie weiter unten beschrieben ist aufgebaut ist.
Code:
function todb(String str)
try{
Statement stmt = con.createStatement();
stmt.execute( str );
}catch( SQLException sqlex){
System.out.println(str);
printSQLException( sqlex );
}
Wo ist das Problem? Wie bekomme ich raus was mir den Speicher zuballert? Da die Strings in der Funktion datei1 nur einmal deklariert und immer wieder überschrieben werden kann ich mir nicht vorstellen das es diese sind. Vielleicht irgendwas in der todb Funktion? Auch die Klasse zum zerlegen der Strings wird nur einmal in der Funktion datei1 deklariert und dann für jede Zeile überschrieben.