19.10.2009, 15:34
Hallo Leute,
folgendes Problem:
Mein Programm ermöglicht es, Datensätze aus einer SQL-Datenbank zu lesen, anzuzeigen und nach Excel zu speichern.
Die Daten werden als 2D-Array ausgelesen und in ein Tabellenelement (Anzeigeelement) zur Anzeige geschrieben.
Bei einer neuen Anfrage wird die Tabelle zunächst mit einem leeren Array beschrieben, bevor die entsprechenden Daten kommen. Das mache ich größtenteils über Referenzen und Eigenschaftsknoten mit "Wert".
Liest man jetzt eine gewisse Anzahl an Datensätzen ein, wird eine nicht unerhebliche Menge an Arbeitsspeicher reserviert (z.b. 500MB bei 70000 Zeilen). Wenn eine neue Anfrage stattfindet, die z.B. nur eine Zeile ergibt, wird der Speicher aber nicht wieder freigegeben. (höchstens 50 MB). Auch nach Beenden des Programms und sogar nach Schließen des LV-Projektes ist der Speicher noch belegt. Eine Freigabe erfolgt erst nach vollständiger Beendigung von LV.
Lässt sich das irgendwie optimieren? Ich möchte die Anzeige sowieso langfristig auf 5000 Zeilen begrenzen, finde es aber seltsam, dass der Speicher nicht wieder freigegebn wird. Hängt das mit der Referenz auf die Tabelle zusammen (wird vor Beenden des programms aber geschlossen)
Gruß,
Daniel
folgendes Problem:
Mein Programm ermöglicht es, Datensätze aus einer SQL-Datenbank zu lesen, anzuzeigen und nach Excel zu speichern.
Die Daten werden als 2D-Array ausgelesen und in ein Tabellenelement (Anzeigeelement) zur Anzeige geschrieben.
Bei einer neuen Anfrage wird die Tabelle zunächst mit einem leeren Array beschrieben, bevor die entsprechenden Daten kommen. Das mache ich größtenteils über Referenzen und Eigenschaftsknoten mit "Wert".
Liest man jetzt eine gewisse Anzahl an Datensätzen ein, wird eine nicht unerhebliche Menge an Arbeitsspeicher reserviert (z.b. 500MB bei 70000 Zeilen). Wenn eine neue Anfrage stattfindet, die z.B. nur eine Zeile ergibt, wird der Speicher aber nicht wieder freigegeben. (höchstens 50 MB). Auch nach Beenden des Programms und sogar nach Schließen des LV-Projektes ist der Speicher noch belegt. Eine Freigabe erfolgt erst nach vollständiger Beendigung von LV.
Lässt sich das irgendwie optimieren? Ich möchte die Anzeige sowieso langfristig auf 5000 Zeilen begrenzen, finde es aber seltsam, dass der Speicher nicht wieder freigegebn wird. Hängt das mit der Referenz auf die Tabelle zusammen (wird vor Beenden des programms aber geschlossen)
Gruß,
Daniel