Hallo,
bei der Ausführung nachfolgendem (hier gekürzt) Code erhalte ich folgende Fehlermeldung: Exception in thread "Thread-2" java.lang.OutOfMemoryError: Java heap space
Es ist eine Swing Anwendung, in der ich über eine MenüBar folgende Aktion auslöse (geThreaded).
In dieser "Prozedur" passiert grob folgendes:
Nachdem genau 48% der Datei eingelesen wurden erhalte ich die oben genannte Fehlermeldung. Kurz vorher (bei ca. 40% der Datei) ist das Phänomen zu erkennen, dass die Prozessorlast von entspannten 50% auf gestresste 100% ansteigt. Der Speicherverlauf ist undspektakulär.
Entferne ich diese Zeile hier:
...läuft alles wunderbar durch.
Freue mich über Tipps.
bei der Ausführung nachfolgendem (hier gekürzt) Code erhalte ich folgende Fehlermeldung: Exception in thread "Thread-2" java.lang.OutOfMemoryError: Java heap space
Es ist eine Swing Anwendung, in der ich über eine MenüBar folgende Aktion auslöse (geThreaded).
Code:
public void actionPerformed(ActionEvent e){
new Thread() {
public void run() {
---> Starten einer Prozedur um eine Datei einzulesen und Zeilenweise in die DB einzufügen
}
}.start();
}
In dieser "Prozedur" passiert grob folgendes:
Code:
//laden des Treibers
Class.forName("org.gjt.mm.mysql.Driver");
//Aufbau der Verbindung
con = DriverManager.getConnection("jdbc:mysql://192.168.1.1/SNOMED_CT", "***","***");
//Eine recht große Datei (26MB) wird Zeichenweise eingelesen und für jede Zeile ein entsprechendes SQL-Statement erzeugt
while ((chr = input.read()) != -1) {
//Datei Parsen und die korrekten Felder und Feldinhalte bestimmen
try {
con.createStatement().execute("INSERT INTO " + tableName + " SET " + fieldsValues + ";");
}
catch (SQLException e)
{
e.printStackTrace();
}
}
//ganz zum Schluss soll die Verbindung zu DB getrennt werden (soweit kommt es nie)
con.close()
Nachdem genau 48% der Datei eingelesen wurden erhalte ich die oben genannte Fehlermeldung. Kurz vorher (bei ca. 40% der Datei) ist das Phänomen zu erkennen, dass die Prozessorlast von entspannten 50% auf gestresste 100% ansteigt. Der Speicherverlauf ist undspektakulär.
Entferne ich diese Zeile hier:
Code:
con.createStatement().execute("INSERT INTO " + tableName + " SET " + fieldsValues + ";");
Freue mich über Tipps.