2010-11-30 12 views
2

Es scheint, gibt es eine 2 GB Größenbeschränkung für Objekte in .Net: How to run Fsi.exe in 64 Bits?.Net Objektgröße Grenze

Gibt es eine Arbeit um dieses? Ich würde gerne ein sehr großes Float-Array (10 GB) in den Speicher laden und dann etwas arbeiten.

Dank

+0

Eine Reihe von was? –

+0

@Torben Rahbek Koch siehe bearbeiten Danke – jlezard

Antwort

8

.NET begrenzt, jedes Objekt max 2 GB auch auf 64-Bit-Plattformen. Sie können einen eigenen Datentyp erstellen, der mehrere Objekte verwendet, um mehr Daten zu speichern und somit die Grenze von 2 GB eines einzelnen Objekts zu umgehen. Zum Beispiel würde ein List<float[]> Ihnen erlauben, mehr als 2 GB zu speichern, aber Sie müssten den notwendigen Installationscode schreiben, damit er sich ähnlich wie ein einzelnes großes Array verhält.

Sie können auch überprüfen, this question.

+0

Danke. Weißt du, was sind die Einschränkungen in Java und Python zum Beispiel? – jlezard

+0

@jlezard: Entschuldigung, ich kann dir nicht mit den Besonderheiten für Java und Python helfen. IronPython hätte dasselbe Limit wie es auf .NET läuft, aber abgesehen davon kann ich nicht sagen. –

2

Ich denke nicht, dass es einen einfachen Workaround dafür gibt, mir scheint es könnte Schwierigkeiten bei der Implementierung eines Heap ohne eine 2 GB Grenze für die Objektgröße geben.

Vielleicht würden Sie besser die Daten brechen einige wie. Es sollte möglich sein, eine Klasse zu schreiben, die sich wie ein Array verhält, aber die Daten in Blöcke fester Größe unter der Haube aufteilt.

+0

Mit .Net 4.5 ist dieses Limit von 2 GB nicht mehr auf dem Bild zu sehenhttps: //bhrnjica.net/2012/07/22/with-net-4-5-10-years-memory-limit-of-2-gb- is-over/ – RBT

3

In Versionen von .NET vor 4.5 beträgt die maximale Objektgröße 2 GB. Ab 4.5 können Sie größere Objekte zuweisen, wenn gcAllowVeryLargeObjects aktiviert ist. Beachten Sie, dass das Limit für string nicht betroffen ist, aber "Arrays" sollten auch "Listen" abdecken, da Listen von Arrays unterstützt werden.

+3

Gibt es eine Obergrenze für gcAllowVeryLargeObjects? – Umer

Verwandte Themen