Was ist das Maximum einer List?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

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.

Quelle

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.


crafter32 
Fragesteller
 27.11.2021, 22:56

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.

0