2009-08-10 5 views

Antwort

3

Es gibt 2 Grenzen

An sich sind Sie darauf beschränkt, was 64bit Windows als adressierbaren Raum bieten wird -, die zu 8 TB beträgt. Wenn eine zukünftige Version von 64bit Windows dieses Maximum erweitert, sollten Sie sehen, dass sich dies sofort in .NET-Anwendungen widerspiegelt, die auf der 64-Bit-CLR ausgeführt werden - es gibt keine hardcodierte oder .NET-Architekturbeschränkung innerhalb des 64-Bit-Adressraums.

Allerdings hat .NET ein fest codiertes Limit von 2 GB pro Objekt. Die einzige realistische Möglichkeit, die Sie erreichen können, besteht darin, wirklich große Arrays zu definieren, z. B. new int[1000000000]. Dies ist auch der Hauptgrund für das Limit (abgesehen von einigen Problemen mit der Speicherfragmentierung), da der .NET-Framework-Standard Array-Indizes als int definiert.

1

Die CLR 64-Bit lässt Sie einen Adressraum von 8 TB sehen.

Bedenken Sie, dass die Speicherfragmentierung dazu führen kann, dass der größte zusammenhängende Speicherplatz, den Sie zuweisen können, deutlich geringer ist.

+0

Hmm, sind Sie sicher, Fragmentierung, angesichts der Virtualisierung der physikalischen Speicherbereiche? –

+0

Recht, physische Speicherfragmentierung ist nicht wichtig, aber der virtuelle Adressraum kann auch fragmentiert werden, wenn viele kleine Objekte auf den Heapspeicher zugewiesen werden, oder wenn einige Objekte in den großen Objektspeicherplatz gelangen und somit keine Garbage Collections erhalten . Zu einem großen Teil wird die CLR sich darum kümmern, aber es ist immer noch möglich, mit der Fragmentierung zu enden. – Nick

3

Dies hängt von einer Reihe von Dingen ab.

  1. Wie viel Arbeitsspeicher kann ein Arbeiter auf Ihrer Maschine verarbeiten? (Ich glaube, das ist derzeit 2 GB für 32-Bit und 64-Bit-Betriebssysteme, obwohl ich könnte inkorrekt sein)
  2. Ist Ihre Anwendung auf einem eigenen Anwendungspool ausgeführt?
  3. Wie viele Arbeitsprozesse werden für Ihren Anwendungspool ausgeführt? (Das heißt Web-App Garten)
+0

1. Wie überprüfe ich es? 2. ja 3. nur 1, ich habe nicht eingestellt Web Gartenarbeit –

+0

@Guy um ehrlich zu sein Ich kann keine maßgeblichen Artikel über die pro Prozess Speicher Grenzen finden. Für 32-Bit-Windows-Betriebssysteme ist es ziemlich klar, dass es 2 GB ist. In der 64-Bit-Welt scheint es jedoch eine Menge Grauzone zu geben. Ich würde versuchen, nach den spezifischen Grenzen pro Prozessspeicher Ihres Betriebssystems zu suchen, da es OS-spezifisch zu sein scheint (auch innerhalb der Familie, also achten Sie darauf, die Edition Ihres Servers einzuschließen, z. B. Web, Standard, Kleinunternehmen usw.) – Joseph

Verwandte Themen