Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Einlesen großer CSV Dateien
rasepretrep
myCSharp.de - Member



Dabei seit:
Beiträge: 105

beantworten | zitieren | melden

Wenn Du ein 64 Bit Betriebsystem vorraussetzen kannst und die Anwendung auch als 64 Bit oder AnyCPU Compilierst, könnte dein Programm auch ohne Änderung des Codes funktionieren. Windows swappt ja schon von sich aus Daten bei Hauptspeichermangel auf die Swap Datei (also Festplatte oder besser SSD) aus.

Du scheiterst in deinem Fall also wahrscheinlich am 2gb Prozess Speicher Limit und das lässt sich am einfachsten mit einem 64 Bit Prozess umgehen.

Habe das auch schon mal bei einer Auftragsarbeit gemacht. Klar hätte man aufwendig das Programm umschreiben können. In dem Fall war es aber wesentlich günstiger einfach einen neuen 64 Bit Rechner abzustellen, der das erledigt.
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7580
Herkunft: Waidring

beantworten | zitieren | melden

Hallo rasepretrep,

grundsätzlich richtig, wenn .net nicht die Limitierung von 2GB pro Objekt hat und janDD auf das DataTable fixiert ist, wird das dennoch nicht klappen.*

Die Limitierung kann ab .net 4.5 per <gcAllowVeryLargeObjects> aufgehoben werden.

mfG Gü

* ich bin mir nicht ganz sicher ob das DataTable als ein Objekt gehandhabt wird od. nicht, aber davon gehe ich schon aus.
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
rasepretrep
myCSharp.de - Member



Dabei seit:
Beiträge: 105

beantworten | zitieren | melden

@gfoidl:

Glaube nicht, dass das wirklich ein Problem darstellt, da bei einem Referenztypen in einem C# object nur platz für einen Zeiger im Objekt reserviert werden muss.

Aber ich lasse mich natürlich gerne eines besseren belehren ...
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7580
Herkunft: Waidring

beantworten | zitieren | melden

Hallo rasepretrep,

und wo liegt das referenzierte Objekte? Im Heap - und dort gibt es vom GC her das Limit mit 2GB pro Objekt (das mit <gcAllowVeryLargeObjects> ab .net 4.5 aber aufgehoben werden kann).
Das kannst du ja mal selber einfach ausprobieren. Erstell einfach ein groß genuges Array und Peng.

Edit 29.09.2012: rasepretrep hat mich freundlicherweise per PM darauf hingewiesen, dass meine Antwort missverständlich ist, da es hier um DataTable und nicht um ein Objekt bestehend aus Value-Types geht. Insofern ist sein obiger Einwand als korrekt anzusehen.

Das Thema ist jetzt ohnehin schon lang genug und bevor es auch noch aus dem Leim geht sollten wir es hier wirklich beenden.

mfG Gü
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von gfoidl am .
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers