Hallo Freunde,
ich bekomme hier langsam ernste Speicherprobleme. Folgender Zehnzeiler sollte das Problem aufzeigen:
Aus der Tabelle resolverCache werden nun knapp 400k Datensätze gefischt, aus der Tabelle GPS gute 5Mio. Das ganze landet, wie bei Datasets üblich, im Speicher, wodurch mein kleines Routinchen da oben satte 1,4GB an Speicher belegt.
Anschließend werden die beiden Tabellen miteinander abgeglichen, aber dies ist für das Problem irrelevant.
Mir stellen sich nun zwei Fragen:
1.) Wenn mein Abgleich beendet ist, wie bekomme ich den Speicher wieder frei ? Ein erneute Aufruf meiner Abgöleichsroutine führt leider direkt in eine OutOfMemory-Exception.
2.) Gibt es eine Möglichkeit, das ganze etwas Speicherfreudlicher zu gestalten ? Bei 10 Mio. Datensätzen wird das ganze echt kniffelig und bei 100Mio entspannt sich das auch nicht gerade...
Beendet wird das ganze dann so:
Aber das gibt den Speicher nicht frei. Ich habe auch mit Dispose herumexperimentiert, ebenfalls ohne sichtbaren Erfolg.
Was kann ich tun ?
ich bekomme hier langsam ernste Speicherprobleme. Folgender Zehnzeiler sollte das Problem aufzeigen:
C#-Quellcode
- SqlConnection Conn = new SqlConnection(ConnStr);
- SqlCommand cmd = new SqlCommand("SELECT Lat,Long FROM ResolverCache", Conn); //2xInt32
- SqlCommand cmd2 = new SqlCommand("SELECT BGrad,BMin,BSek,BDir,LGrad,LMin,LSek,LDir FROM GPS", Conn); //4xInt32, 2xChar(1), 2xDouble
- SqlDataAdapter da = new SqlDataAdapter(cmd);
- SqlDataAdapter da2 = new SqlDataAdapter(cmd2);
- DataSet ds = new DataSet();
- da.Fill(ds, "Cache"));
- da2.Fill(ds, "GPS"));
Aus der Tabelle resolverCache werden nun knapp 400k Datensätze gefischt, aus der Tabelle GPS gute 5Mio. Das ganze landet, wie bei Datasets üblich, im Speicher, wodurch mein kleines Routinchen da oben satte 1,4GB an Speicher belegt.
Anschließend werden die beiden Tabellen miteinander abgeglichen, aber dies ist für das Problem irrelevant.
Mir stellen sich nun zwei Fragen:
1.) Wenn mein Abgleich beendet ist, wie bekomme ich den Speicher wieder frei ? Ein erneute Aufruf meiner Abgöleichsroutine führt leider direkt in eine OutOfMemory-Exception.
2.) Gibt es eine Möglichkeit, das ganze etwas Speicherfreudlicher zu gestalten ? Bei 10 Mio. Datensätzen wird das ganze echt kniffelig und bei 100Mio entspannt sich das auch nicht gerade...
Beendet wird das ganze dann so:
Aber das gibt den Speicher nicht frei. Ich habe auch mit Dispose herumexperimentiert, ebenfalls ohne sichtbaren Erfolg.
Was kann ich tun ?