System.OutOfMemoryException mit C # auf einem großen Datensatz

stimmen
1

Ich bin mit C # und ich erhalte einen aus System.OutOfMemoryException Fehler, nachdem ich in 50.000 Datensätze gelesen, was die Beste Praxis so große Datensätze für den Umgang mit? Wird Hilfe Paging?

Vielen Dank

Veröffentlicht am 07/10/2008 um 23:50
quelle vom benutzer
In anderen Sprachen...                            


5 antworten

stimmen
4

Ich könnte empfehlen, die MDB-Datei erstellen und einen Datareader mit den Aufzeichnungen in die MDB zu streamen anstatt zu versuchen, vor Ort in und cachen den gesamten Satz von Daten zu lesen. Mit einem Datareader ist der Prozess mehr manuelle, aber Sie einen Datensatz nur zu einer Zeit, so dass Sie Ihr Gedächtnis nicht füllen wird up.

Beantwortet am 08/10/2008 um 19:35
quelle vom benutzer

stimmen
2

Sie sollten noch nicht alles auf einmal lesen. Lesen Sie in Stücke, schreiben Sie dann die Brocken aus auf die MDB-Datei, dann einen anderen Brocken lesen und dass in die Datei hinzuzufügen. Lesen in 50.000 Datensätze auf einmal ist nur Ärger bringen.

Beantwortet am 08/10/2008 um 00:00
quelle vom benutzer

stimmen
1

Natürlich können Sie nicht alle Daten in den Speicher eingelesen, bevor Sie die MDB-Datei erstellen, sonst würden Sie nicht aus der Erinnerung Ausnahme bekommen. :-)

Sie haben zwei Möglichkeiten: - Partitionierung - die Daten in kleinere Stücke lesen Filterung - virtualisieren - teilen Sie die Daten in den Seiten und nur die aktuelle Seite laden

In jedem Fall haben Sie die MDB-Datei erstellen und die Daten danach in Blöcken übertragen.

Beantwortet am 08/10/2008 um 00:00
quelle vom benutzer

stimmen
0

Ich würde vorschlagen , einen mit Generator :

“... statt eine Reihe von Gebäude alle Werte enthält, und sie alle auf einmal zurückkehrt, liefert ein Generator, um die Eins-Werte in einer Zeit, die weniger Speicher benötigt und ermöglicht es dem Anrufer sofort gestartet, die ersten paar Werte erhalten Verarbeitung. Kurz , sieht ein Generator wie eine Funktion, sondern verhält sich wie ein Iterator.“

Wikipedia - Artikel hat auch einige gute Beispiele

Beantwortet am 12/10/2008 um 12:11
quelle vom benutzer

stimmen
0

Wenn Sie XML verwenden, nur ein paar Knoten an zum Zeitpunkt lesen. Wenn Sie ein anderes Format verwenden, lesen Sie einfach ein paar Zeilen (oder was auch immer) zu einem Zeitpunkt. Nicht die ganze Sache in den Speicher laden, bevor Sie arbeiten daran beginnen.

Beantwortet am 07/10/2008 um 23:52
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more