Was ist das Maximum einer List?
Guten Tag,
ich wollte fragen was ist eigentlich das Maximum von einer List<int> in C#?
Ich programmiere gerade etwas, wo ich IDs erstelle und zwar so viele, wie die maximale Größe eines Int. Diese Speicher ich in eine Liste und wollte deswegen diese Frage stellen.
LG
1 Antwort
Da Listen intern einen Integer verwenden (z.B. für die Indizierung oder die Angabe der Kapazität), kannst du zunächst davon ausgehen, dass die Elementanzahl von 2 147 483 647 (Int32.MaxValue) nicht überschritten wird. Allerdings gibt es in .NET auch noch eine generelle Einschränkung der Speichergröße für Objekte, die ungefähr bei 2 GB liegt.
Wenn du nun für einen Integerwert mit 4 Byte Speicherplatz rechnest, kommst du auf einen benötigten Speicherplatz von 8 589 934 588 Bytes (+ Speicherplatz für das Listenobjekt selbst), was ungefähr 8,5 GB entspricht.
Die Grenze von 2 GB kannst du mittels Projektkonfiguration aufheben (lies dazu hier: <gcAllowVeryLargeObjects> element). Doch laut Dokumentation kommst du so wohl auch nicht auf die Elementanzahl, die Int32.MaxValue tatsächlich bieten würde:
.NET Framework only: For very large List<T> objects, you can increase the maximum capacity to 2 billion elements on a 64-bit system by setting the enabled attribute of the <gcAllowVeryLargeObjects> configuration element to true in the run-time environment.
An deiner Stelle würde ich erst einmal hinterfragen, ob du die IDs überhaupt tatsächlich in einer Liste brauchst oder ob es nicht reicht, IDs einzeln zu ermitteln, wenn sie benötigt werden.
Achso nein, ich wollte eigentlich nur einen Code bauen, der durch diese Liste den Ram komplett ausnützt. Mit threads hätte ich dabei auch die CPU belastet.