Heim Backend-Entwicklung C++ Warum beträgt die Standardgröße des C#-Stacks immer noch 1 MB (oder 4 MB für 64-Bit)?

Warum beträgt die Standardgröße des C#-Stacks immer noch 1 MB (oder 4 MB für 64-Bit)?

Jan 21, 2025 pm 06:22 PM

Why is the Default C# Stack Size Still 1 MB (or 4 MB for 64-bit)?

Warum beträgt die C#-Stack-Größe immer noch 1 MB? Entdecken Sie die historischen und technischen Gründe

Da moderne PCs über ausreichend physischen Speicher verfügen, ist die Stapelgröße von C# bei 1 MB für 32-Bit-Prozesse und 4 MB für 64-Bit-Prozesse geblieben, was Fragen über die Logik hinter dieser scheinbar willkürlichen Grenze aufwirft.

Historische Ursprünge: Das Erbe von Windows NT

Die Standardstapelgröße von 1 MB wurde ursprünglich während der Entwicklung von Windows NT festgelegt. Wenn eine ausführbare Datei oder ein CreateThread()-API-Aufruf keine bestimmte Stapelgröße angibt, verwendet das Betriebssystem standardmäßig diesen Wert.

Gründe für die Wahl von 1 MB

Die Auswahl von 1 MB kann von verschiedenen Faktoren beeinflusst werden. Erstens stellte er in den frühen Tagen der Personalcomputer eine beträchtliche Menge an Speicher dar. Zweitens ermöglicht die Demand-Page-Architektur des virtuellen Speichers von Windows NT die virtuelle Zuweisung von Stapeln, wodurch ihre Auswirkungen auf den physischen Speicher minimiert werden.

Überbelegung von .NET-Programmen

Während 1 MB für anspruchsvolle native Programme in Ordnung sein mag, erweist es sich für .NET-Anwendungen als übertrieben. In .NET werden Zeichenfolgen und Arrays auf dem verwalteten Heap zugewiesen, wodurch der Stapelverbrauch reduziert wird. Darüber hinaus werden unsichere Zeiger und Stackalloc selten verwendet.

JIT-Kompilierung und Stack-Nutzung

Die einzige nennenswerte Stapelnutzung in .NET erfolgt während der Just-in-Time-Kompilierung (JIT) zur Laufzeit. Der Stack wird zur Codeoptimierung und Ausnahmebehandlung verwendet, benötigt jedoch typischerweise nur einige Zehntausend Bytes.

Stackbelegung

Eine Funktion von .NET besteht darin, dass der Stapel belegt ist, wodurch Platz in der Auslagerungsdatei für mögliche Auslagerungen reserviert wird. Dieser kostspielige Prozess wurde ursprünglich als Sicherheitsmaßnahme eingeführt, ist jedoch inzwischen veraltet.

Moderne Veränderungen: keine Stapelbelegung mehr

In neueren Versionen von .NET (ab etwa .NET 4.5) hat die CLR aus Leistungsgründen das Stack-Hogging abgeschafft. Durch diese Änderung wird der Einfluss der Stapelgröße auf die Speichernutzung weiter reduziert.

Fazit

Die Stapelgröße von 1 MB in C# ist ein historisches Artefakt, das von den Einschränkungen früher Computerplattformen beeinflusst wird. Angesichts der Fähigkeiten moderner Hardware mag es veraltet erscheinen, aufgrund seines relativ geringen Speicheraufwands und der ausreichenden Kapazität für die meisten Anwendungen ist es jedoch immer noch eine vernünftige Standardeinstellung.

Das obige ist der detaillierte Inhalt vonWarum beträgt die Standardgröße des C#-Stacks immer noch 1 MB (oder 4 MB für 64-Bit)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Mar 03, 2025 pm 05:52 PM

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

GULC: C -Bibliothek von Grund auf neu gebaut GULC: C -Bibliothek von Grund auf neu gebaut Mar 03, 2025 pm 05:46 PM

GULC: C -Bibliothek von Grund auf neu gebaut

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte Mar 03, 2025 pm 05:53 PM

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Mar 03, 2025 pm 05:53 PM

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Mar 03, 2025 pm 05:51 PM

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe eindeutiger Gebrauch und Phrasenfreigabe Mar 03, 2025 pm 05:51 PM

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Mar 12, 2025 pm 04:52 PM

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Mar 12, 2025 pm 04:50 PM

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

See all articles