Hallo Allerseits,
ich bekomme in einer Klasse immer eine java.lang.OutOfMemoryError, den ich mir aber irgendwie überhaupt nicht erklären kann.
Vielleicht könnt ihr mir weiter helfen?
Im wesentlichen geht es dabei um eine Schleife zum auslesen von Produkten aus einer Datenbank. Er fängt an die Produkte auszulesen, dabei schwillt der Speicherverbrauche immer weiter an, bis er die Verarbeitung nach einer Reihe von Produkte mit obiger Fehlermeldung abbricht.
Die Produkt Klasse ist zwar sehr komplex, ABER ich instanziere das Produkt ja nur in der Schleife ein mal und nach meinem Verständnis müsste der Speicher nach dem durchlaufen der Schleife wieder frei sein, warum wird der Speicherverbrauch trotzdem immer größer?
Hier ist der ungekürzte Code der Klasse:
[JAVA=1]
public void doStore() throws SQLException, IOException{
PreparedStatement statement = con.prepareStatement("SELECT * FROM `user_produkte_produkte` WHERE `deleted` = 0;");
ResultSet rs = statement.executeQuery();
while (rs.next()){
Product product = new ProductImpl();
product.setArtikelNr(rs.getString("artikel_nr"));
// bezeichnung
product.getDescriptions().addAll(getDescription(Type.BEZEICHNUNG, rs.getString("bezeichnung"), null));
// zusatzbezeichnung
product.getDescriptions().addAll(getDescription(Type.ZUSATZBEZEICHNUNG, rs.getString("zusatzbezeichnung"), null));
// beschreibung
product.getDescriptions().addAll(getDescription(Type.BESCHREIBUNG, rs.getString("beschreibung"), null));
// eigenschaften
product.getDescriptions().addAll(getDescription(Type.EIGENSCHAFTEN, rs.getString("eigenschaften"), null));
// verschließbar
product.getDescriptions().addAll(getDescription(Type.VERSCHLIESSBAR, rs.getString("verschliessbar"), null));
// adapter
// wird in keinem Datensatz verwendet
// tuerdurchbruch
// wird in keinem Datensatz verwendet
// tuerhoehe
product.getDescriptions().addAll(getDescription(Type.TUERHOEHE, rs.getString("tuerhoehe"), null));
// tuerbereite
product.getDescriptions().addAll(getDescription(Type.TUERBEREITE, rs.getString("tuerbereite"), null));
// klemmbereich
product.getDescriptions().addAll(getDescription(Type.KLEMMBEREICH, rs.getString("klemmbereich"), null));
// tuerstaerke
product.getDescriptions().addAll(getDescription(Type.TUERSTAERKE, rs.getString("tuerstaerke"), null));
// tragkraft
product.getDescriptions().addAll(getDescription(Type.TRAGKRAFT, rs.getString("tragkraft"), null));
// tuergewicht
product.getDescriptions().addAll(getDescription(Type.TUERGEWICHT, rs.getString("tuergewicht"), null));
// gewinde
// wird in keinem Datensatz verwendet
// stiftausfuehrung
product.getDescriptions().addAll(getDescription(Type.STIFTAUSFUEHRUNG, rs.getString("stiftausfuehrung"), null));
// form
// wird in keinem Datensatz verwendet
// ausfuehrungsart
// wird in keinem Datensatz verwendet
// lochung
product.getDescriptions().addAll(getDescription(Type.LOCHUNG, rs.getString("lochung"), null));
// vierkant
product.getDescriptions().addAll(getDescription(Type.VIERKANT, rs.getString("vierkant"), null));
// schutzart
// wird in keinem Datensatz verwendet
// entfernung
product.getDescriptions().addAll(getDescription(Type.ENTFERNUNG, rs.getString("entfernung"), null));
// dornmass
product.getDescriptions().addAll(getDescription(Type.DORNMASS, rs.getString("dornmass"), null));
// stulpausfuehrung
// wird in keinem Datensatz verwendet
// din
product.getDescriptions().addAll(getDescription(Type.DIN, rs.getString("din"), null));
// falle_riegel_stellung
// wird in keinem Datensatz verwendet
// nuss
product.getDescriptions().addAll(getDescription(Type.NUSS, rs.getString("nuss"), null));
// wechsel
// wird in keinem Datensatz verwendet
// riegelausschluss
product.getDescriptions().addAll(getDescription(Type.RIEGELAUSSCHLUSS, rs.getString("riegelausschluss"), null));
// touranzahl
// wird in keinem Datensatz verwendet
// werkstoff
product.getDescriptions().addAll(getDescription(Type.WERKSTOFF, new String(rs.getBytes("werkstoff")), null));
// oberflaeche
product.getDescriptions().addAll(getDescription(Type.OBERFLAECHE, new String(rs.getBytes("oberflaeche")), null));
// gewicht
product.getDescriptions().addAll(getDescription(Type.GEWICHT, rs.getString("gewicht"), null));
// verriegelung
// wird in keinem Datensatz verwendet
// feststeller
// wird in keinem Datensatz verwendet
// hub
product.getDescriptions().addAll(getDescription(Type.HUB, rs.getString("hub"), null));
// befestigungsart
// wird in keinem Datensatz verwendet
// nockengroesse
// wird in keinem Datensatz verwendet
// knaufseitenmass
// wird in keinem Datensatz verwendet
// schliesseitenmass
product.getDescriptions().addAll(getDescription(Type.SCHLIESSEITENMASS, rs.getString("schliesseitenmass"), null));
// stiftzuhaltungen
// wird in keinem Datensatz verwendet
// schlaufen
// wird in keinem Datensatz verwendet
// anpressdruck
product.getDescriptions().addAll(getDescription(Type.ANPRESSDRUCK, rs.getString("anpressdruck"), null));
// oeffnungskraft
product.getDescriptions().addAll(getDescription(Type.OEFFNUNGSKRAFT, rs.getString("oeffnungskraft"), null));
// schluessellaenge
product.getDescriptions().addAll(getDescription(Type.SCHLUESSELLAENGE, rs.getString("schluessellaenge"), null));
// zuhaltungen_kunde
product.getDescriptions().addAll(getDescription(Type.ZUHALTUNGENKUNDE, rs.getString("zuhaltungen_kunde"), null));
// zuhaltungen_bank
product.getDescriptions().addAll(getDescription(Type.ZUHALTUNGENBANK, rs.getString("zuhaltungen_bank"), null));
// zubehoer
// dieses Feld scheint nur die ANZAHL der Zubehörteil zu speichern. Es wird daher nicht weiter verarbeitet.
// produktverknuepfungen
// dieses Feld scheint nur die ANZAHL der Produktverknuepfungen zu speichern. Es wird daher nicht weiter verarbeitet.
// montageanleitung
// Montageanleitungen sind als PDF in dem Verzeichnis fileadmin/_pdf/Geldschrank/ mit Zuordnung per Namenskonvention hinterlegt.
// Mass A
product.getDescriptions().addAll(getDescription(Type.MASS_A, rs.getString("m_1"), null));
// Mass a
product.getDescriptions().addAll(getDescription(Type.MASS_a, rs.getString("m_2"), null));
// Mass B
product.getDescriptions().addAll(getDescription(Type.MASS_B, rs.getString("m_3"), null));
// Mass b
product.getDescriptions().addAll(getDescription(Type.MASS_b, rs.getString("m_4"), null));
// Mass C
product.getDescriptions().addAll(getDescription(Type.MASS_C, rs.getString("m_5"), null));
// Mass c
product.getDescriptions().addAll(getDescription(Type.MASS_c, rs.getString("m_6"), null));
// Mass D
product.getDescriptions().addAll(getDescription(Type.MASS_D, rs.getString("m_7"), null));
// Mass d
product.getDescriptions().addAll(getDescription(Type.MASS_d, rs.getString("m_9"), null));
// Mass d1
product.getDescriptions().addAll(getDescription(Type.MASS_d1, rs.getString("m_10"), null));
// Mass E
product.getDescriptions().addAll(getDescription(Type.MASS_E, rs.getString("m_11"), null));
// Mass e
product.getDescriptions().addAll(getDescription(Type.MASS_e, rs.getString("m_12"), null));
// Mass F
product.getDescriptions().addAll(getDescription(Type.MASS_F, rs.getString("m_13"), null));
// Mass f
product.getDescriptions().addAll(getDescription(Type.MASS_f, rs.getString("m_14"), null));
// Mass G
product.getDescriptions().addAll(getDescription(Type.MASS_G, rs.getString("m_15"), null));
// Mass g
product.getDescriptions().addAll(getDescription(Type.MASS_g, rs.getString("m_16"), null));
// Mass H
product.getDescriptions().addAll(getDescription(Type.MASS_H, rs.getString("m_17"), null));
// Mass h
product.getDescriptions().addAll(getDescription(Type.MASS_h, rs.getString("m_18"), null));
// Mass i
product.getDescriptions().addAll(getDescription(Type.MASS_i, rs.getString("m_19"), null));
// Mass k
product.getDescriptions().addAll(getDescription(Type.MASS_k, rs.getString("m_20"), null));
// Mass L
product.getDescriptions().addAll(getDescription(Type.MASS_L, rs.getString("m_21"), null));
// Mass l
product.getDescriptions().addAll(getDescription(Type.MASS_l, rs.getString("m_22"), null));
// Mass L1
product.getDescriptions().addAll(getDescription(Type.MASS_L1, rs.getString("m_23"), null));
// Mass l1
product.getDescriptions().addAll(getDescription(Type.MASS_l1, rs.getString("m_24"), null));
// Mass n
product.getDescriptions().addAll(getDescription(Type.MASS_n, rs.getString("m_25"), null));
// Mass M
product.getDescriptions().addAll(getDescription(Type.MASS_M, rs.getString("m_26"), null));
// Mass m
product.getDescriptions().addAll(getDescription(Type.MASS_m, rs.getString("m_27"), null));
// Mass R
product.getDescriptions().addAll(getDescription(Type.MASS_R, rs.getString("m_28"), null));
// Mass r
product.getDescriptions().addAll(getDescription(Type.MASS_r, rs.getString("m_29"), null));
// Mass S
product.getDescriptions().addAll(getDescription(Type.MASS_S, rs.getString("m_30"), null));
// Mass s
product.getDescriptions().addAll(getDescription(Type.MASS_s, rs.getString("m_31"), null));
// Mass TS
product.getDescriptions().addAll(getDescription(Type.MASS_TS, rs.getString("m_32"), null));
// Mass X
product.getDescriptions().addAll(getDescription(Type.MASS_X, rs.getString("m_33"), null));
// tuerstaerke_bis
product.getDescriptions().addAll(getDescription(Type.TUERSTAERKEBIS, rs.getString("tuerstaerke_bis"), null));
// oeffnungswinkel_von
// wird in keinem Datensatz verwendet
// oeffnungswinkel_bis
product.getDescriptions().addAll(getDescription(Type.OEFFNUNGSWINKELBIS, rs.getString("oeffnungswinkel_bis"), null));
// drehpunkt
product.getDescriptions().addAll(getDescription(Type.DREHPUNKT, rs.getString("drehpunkt"), null));
// ueberschlag
product.getDescriptions().addAll(getDescription(Type.UEBERSCHLAG, rs.getString("ueberschlag"), null));
// hoehe
product.getDescriptions().addAll(getDescription(Type.HOEHE, rs.getString("hoehe"), null));
// breite
product.getDescriptions().addAll(getDescription(Type.BREITE, rs.getString("breite"), null));
// laenge
product.getDescriptions().addAll(getDescription(Type.LAENGE, rs.getString("laenge"), null));
// produkttyp
product.setVariant(rs.getBoolean("produkttyp"));
// produktvarianten
// Der Sinn und Zweck des DB-Feldes "produktvarianten" will sich mir nicht erschließen. Das Feld scheint
// nur eine Aussage darüber zu machen, wie viele Varianten existieren, nicht jedoch welche. Aufgrund
// der offensichtlichen Zweckfreiheit des Feldes werde ich die Daten nicht weiter verarbeiten.
// schluessel
product.getDescriptions().addAll(getDescription(Type.SCHLUESSEL, rs.getString("schluessel"), null));
// Mass Bl
product.getDescriptions().addAll(getDescription(Type.MASS_Bl, rs.getString("m_34"), null));
// Mass Br
product.getDescriptions().addAll(getDescription(Type.MASS_Br, rs.getString("m_35"), null));
// Mass Wl
product.getDescriptions().addAll(getDescription(Type.MASS_Wl, rs.getString("m_36"), null));
// Mass Wr
product.getDescriptions().addAll(getDescription(Type.MASS_Wr, rs.getString("m_37"), null));
// Mass W
product.getDescriptions().addAll(getDescription(Type.MASS_W, rs.getString("m_38"), null));
// Mass t
product.getDescriptions().addAll(getDescription(Type.MASS_t, rs.getString("m_39"), null));
System.out.printf("Speichere Produkt mit der Artikel-Nr.: %s\n", product.getArtikelNr());
FileOutputStream fos = new FileOutputStream("products/" + product.getArtikelNr());
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(product);
out.close();
fos.close();
product = null;
System.gc();
}
}
[/code]
Es wäre wirklich toll, wenn mir da jemand einen Hinweis geben könnte.
Grüße
neurox
ich bekomme in einer Klasse immer eine java.lang.OutOfMemoryError, den ich mir aber irgendwie überhaupt nicht erklären kann.
Vielleicht könnt ihr mir weiter helfen?
Im wesentlichen geht es dabei um eine Schleife zum auslesen von Produkten aus einer Datenbank. Er fängt an die Produkte auszulesen, dabei schwillt der Speicherverbrauche immer weiter an, bis er die Verarbeitung nach einer Reihe von Produkte mit obiger Fehlermeldung abbricht.
Die Produkt Klasse ist zwar sehr komplex, ABER ich instanziere das Produkt ja nur in der Schleife ein mal und nach meinem Verständnis müsste der Speicher nach dem durchlaufen der Schleife wieder frei sein, warum wird der Speicherverbrauch trotzdem immer größer?
Hier ist der ungekürzte Code der Klasse:
[JAVA=1]
public void doStore() throws SQLException, IOException{
PreparedStatement statement = con.prepareStatement("SELECT * FROM `user_produkte_produkte` WHERE `deleted` = 0;");
ResultSet rs = statement.executeQuery();
while (rs.next()){
Product product = new ProductImpl();
product.setArtikelNr(rs.getString("artikel_nr"));
// bezeichnung
product.getDescriptions().addAll(getDescription(Type.BEZEICHNUNG, rs.getString("bezeichnung"), null));
// zusatzbezeichnung
product.getDescriptions().addAll(getDescription(Type.ZUSATZBEZEICHNUNG, rs.getString("zusatzbezeichnung"), null));
// beschreibung
product.getDescriptions().addAll(getDescription(Type.BESCHREIBUNG, rs.getString("beschreibung"), null));
// eigenschaften
product.getDescriptions().addAll(getDescription(Type.EIGENSCHAFTEN, rs.getString("eigenschaften"), null));
// verschließbar
product.getDescriptions().addAll(getDescription(Type.VERSCHLIESSBAR, rs.getString("verschliessbar"), null));
// adapter
// wird in keinem Datensatz verwendet
// tuerdurchbruch
// wird in keinem Datensatz verwendet
// tuerhoehe
product.getDescriptions().addAll(getDescription(Type.TUERHOEHE, rs.getString("tuerhoehe"), null));
// tuerbereite
product.getDescriptions().addAll(getDescription(Type.TUERBEREITE, rs.getString("tuerbereite"), null));
// klemmbereich
product.getDescriptions().addAll(getDescription(Type.KLEMMBEREICH, rs.getString("klemmbereich"), null));
// tuerstaerke
product.getDescriptions().addAll(getDescription(Type.TUERSTAERKE, rs.getString("tuerstaerke"), null));
// tragkraft
product.getDescriptions().addAll(getDescription(Type.TRAGKRAFT, rs.getString("tragkraft"), null));
// tuergewicht
product.getDescriptions().addAll(getDescription(Type.TUERGEWICHT, rs.getString("tuergewicht"), null));
// gewinde
// wird in keinem Datensatz verwendet
// stiftausfuehrung
product.getDescriptions().addAll(getDescription(Type.STIFTAUSFUEHRUNG, rs.getString("stiftausfuehrung"), null));
// form
// wird in keinem Datensatz verwendet
// ausfuehrungsart
// wird in keinem Datensatz verwendet
// lochung
product.getDescriptions().addAll(getDescription(Type.LOCHUNG, rs.getString("lochung"), null));
// vierkant
product.getDescriptions().addAll(getDescription(Type.VIERKANT, rs.getString("vierkant"), null));
// schutzart
// wird in keinem Datensatz verwendet
// entfernung
product.getDescriptions().addAll(getDescription(Type.ENTFERNUNG, rs.getString("entfernung"), null));
// dornmass
product.getDescriptions().addAll(getDescription(Type.DORNMASS, rs.getString("dornmass"), null));
// stulpausfuehrung
// wird in keinem Datensatz verwendet
// din
product.getDescriptions().addAll(getDescription(Type.DIN, rs.getString("din"), null));
// falle_riegel_stellung
// wird in keinem Datensatz verwendet
// nuss
product.getDescriptions().addAll(getDescription(Type.NUSS, rs.getString("nuss"), null));
// wechsel
// wird in keinem Datensatz verwendet
// riegelausschluss
product.getDescriptions().addAll(getDescription(Type.RIEGELAUSSCHLUSS, rs.getString("riegelausschluss"), null));
// touranzahl
// wird in keinem Datensatz verwendet
// werkstoff
product.getDescriptions().addAll(getDescription(Type.WERKSTOFF, new String(rs.getBytes("werkstoff")), null));
// oberflaeche
product.getDescriptions().addAll(getDescription(Type.OBERFLAECHE, new String(rs.getBytes("oberflaeche")), null));
// gewicht
product.getDescriptions().addAll(getDescription(Type.GEWICHT, rs.getString("gewicht"), null));
// verriegelung
// wird in keinem Datensatz verwendet
// feststeller
// wird in keinem Datensatz verwendet
// hub
product.getDescriptions().addAll(getDescription(Type.HUB, rs.getString("hub"), null));
// befestigungsart
// wird in keinem Datensatz verwendet
// nockengroesse
// wird in keinem Datensatz verwendet
// knaufseitenmass
// wird in keinem Datensatz verwendet
// schliesseitenmass
product.getDescriptions().addAll(getDescription(Type.SCHLIESSEITENMASS, rs.getString("schliesseitenmass"), null));
// stiftzuhaltungen
// wird in keinem Datensatz verwendet
// schlaufen
// wird in keinem Datensatz verwendet
// anpressdruck
product.getDescriptions().addAll(getDescription(Type.ANPRESSDRUCK, rs.getString("anpressdruck"), null));
// oeffnungskraft
product.getDescriptions().addAll(getDescription(Type.OEFFNUNGSKRAFT, rs.getString("oeffnungskraft"), null));
// schluessellaenge
product.getDescriptions().addAll(getDescription(Type.SCHLUESSELLAENGE, rs.getString("schluessellaenge"), null));
// zuhaltungen_kunde
product.getDescriptions().addAll(getDescription(Type.ZUHALTUNGENKUNDE, rs.getString("zuhaltungen_kunde"), null));
// zuhaltungen_bank
product.getDescriptions().addAll(getDescription(Type.ZUHALTUNGENBANK, rs.getString("zuhaltungen_bank"), null));
// zubehoer
// dieses Feld scheint nur die ANZAHL der Zubehörteil zu speichern. Es wird daher nicht weiter verarbeitet.
// produktverknuepfungen
// dieses Feld scheint nur die ANZAHL der Produktverknuepfungen zu speichern. Es wird daher nicht weiter verarbeitet.
// montageanleitung
// Montageanleitungen sind als PDF in dem Verzeichnis fileadmin/_pdf/Geldschrank/ mit Zuordnung per Namenskonvention hinterlegt.
// Mass A
product.getDescriptions().addAll(getDescription(Type.MASS_A, rs.getString("m_1"), null));
// Mass a
product.getDescriptions().addAll(getDescription(Type.MASS_a, rs.getString("m_2"), null));
// Mass B
product.getDescriptions().addAll(getDescription(Type.MASS_B, rs.getString("m_3"), null));
// Mass b
product.getDescriptions().addAll(getDescription(Type.MASS_b, rs.getString("m_4"), null));
// Mass C
product.getDescriptions().addAll(getDescription(Type.MASS_C, rs.getString("m_5"), null));
// Mass c
product.getDescriptions().addAll(getDescription(Type.MASS_c, rs.getString("m_6"), null));
// Mass D
product.getDescriptions().addAll(getDescription(Type.MASS_D, rs.getString("m_7"), null));
// Mass d
product.getDescriptions().addAll(getDescription(Type.MASS_d, rs.getString("m_9"), null));
// Mass d1
product.getDescriptions().addAll(getDescription(Type.MASS_d1, rs.getString("m_10"), null));
// Mass E
product.getDescriptions().addAll(getDescription(Type.MASS_E, rs.getString("m_11"), null));
// Mass e
product.getDescriptions().addAll(getDescription(Type.MASS_e, rs.getString("m_12"), null));
// Mass F
product.getDescriptions().addAll(getDescription(Type.MASS_F, rs.getString("m_13"), null));
// Mass f
product.getDescriptions().addAll(getDescription(Type.MASS_f, rs.getString("m_14"), null));
// Mass G
product.getDescriptions().addAll(getDescription(Type.MASS_G, rs.getString("m_15"), null));
// Mass g
product.getDescriptions().addAll(getDescription(Type.MASS_g, rs.getString("m_16"), null));
// Mass H
product.getDescriptions().addAll(getDescription(Type.MASS_H, rs.getString("m_17"), null));
// Mass h
product.getDescriptions().addAll(getDescription(Type.MASS_h, rs.getString("m_18"), null));
// Mass i
product.getDescriptions().addAll(getDescription(Type.MASS_i, rs.getString("m_19"), null));
// Mass k
product.getDescriptions().addAll(getDescription(Type.MASS_k, rs.getString("m_20"), null));
// Mass L
product.getDescriptions().addAll(getDescription(Type.MASS_L, rs.getString("m_21"), null));
// Mass l
product.getDescriptions().addAll(getDescription(Type.MASS_l, rs.getString("m_22"), null));
// Mass L1
product.getDescriptions().addAll(getDescription(Type.MASS_L1, rs.getString("m_23"), null));
// Mass l1
product.getDescriptions().addAll(getDescription(Type.MASS_l1, rs.getString("m_24"), null));
// Mass n
product.getDescriptions().addAll(getDescription(Type.MASS_n, rs.getString("m_25"), null));
// Mass M
product.getDescriptions().addAll(getDescription(Type.MASS_M, rs.getString("m_26"), null));
// Mass m
product.getDescriptions().addAll(getDescription(Type.MASS_m, rs.getString("m_27"), null));
// Mass R
product.getDescriptions().addAll(getDescription(Type.MASS_R, rs.getString("m_28"), null));
// Mass r
product.getDescriptions().addAll(getDescription(Type.MASS_r, rs.getString("m_29"), null));
// Mass S
product.getDescriptions().addAll(getDescription(Type.MASS_S, rs.getString("m_30"), null));
// Mass s
product.getDescriptions().addAll(getDescription(Type.MASS_s, rs.getString("m_31"), null));
// Mass TS
product.getDescriptions().addAll(getDescription(Type.MASS_TS, rs.getString("m_32"), null));
// Mass X
product.getDescriptions().addAll(getDescription(Type.MASS_X, rs.getString("m_33"), null));
// tuerstaerke_bis
product.getDescriptions().addAll(getDescription(Type.TUERSTAERKEBIS, rs.getString("tuerstaerke_bis"), null));
// oeffnungswinkel_von
// wird in keinem Datensatz verwendet
// oeffnungswinkel_bis
product.getDescriptions().addAll(getDescription(Type.OEFFNUNGSWINKELBIS, rs.getString("oeffnungswinkel_bis"), null));
// drehpunkt
product.getDescriptions().addAll(getDescription(Type.DREHPUNKT, rs.getString("drehpunkt"), null));
// ueberschlag
product.getDescriptions().addAll(getDescription(Type.UEBERSCHLAG, rs.getString("ueberschlag"), null));
// hoehe
product.getDescriptions().addAll(getDescription(Type.HOEHE, rs.getString("hoehe"), null));
// breite
product.getDescriptions().addAll(getDescription(Type.BREITE, rs.getString("breite"), null));
// laenge
product.getDescriptions().addAll(getDescription(Type.LAENGE, rs.getString("laenge"), null));
// produkttyp
product.setVariant(rs.getBoolean("produkttyp"));
// produktvarianten
// Der Sinn und Zweck des DB-Feldes "produktvarianten" will sich mir nicht erschließen. Das Feld scheint
// nur eine Aussage darüber zu machen, wie viele Varianten existieren, nicht jedoch welche. Aufgrund
// der offensichtlichen Zweckfreiheit des Feldes werde ich die Daten nicht weiter verarbeiten.
// schluessel
product.getDescriptions().addAll(getDescription(Type.SCHLUESSEL, rs.getString("schluessel"), null));
// Mass Bl
product.getDescriptions().addAll(getDescription(Type.MASS_Bl, rs.getString("m_34"), null));
// Mass Br
product.getDescriptions().addAll(getDescription(Type.MASS_Br, rs.getString("m_35"), null));
// Mass Wl
product.getDescriptions().addAll(getDescription(Type.MASS_Wl, rs.getString("m_36"), null));
// Mass Wr
product.getDescriptions().addAll(getDescription(Type.MASS_Wr, rs.getString("m_37"), null));
// Mass W
product.getDescriptions().addAll(getDescription(Type.MASS_W, rs.getString("m_38"), null));
// Mass t
product.getDescriptions().addAll(getDescription(Type.MASS_t, rs.getString("m_39"), null));
System.out.printf("Speichere Produkt mit der Artikel-Nr.: %s\n", product.getArtikelNr());
FileOutputStream fos = new FileOutputStream("products/" + product.getArtikelNr());
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(product);
out.close();
fos.close();
product = null;
System.gc();
}
}
[/code]
Es wäre wirklich toll, wenn mir da jemand einen Hinweis geben könnte.
Grüße
neurox