Statische Klasse memory allocation, wo es gespeichert ist C#
Ich einen Artikel gelesen, das verwirrt mich Speicherzuweisung, in dem es hieß:
Singleton-Objekte werden auf dem heap gespeichert, während statische Klassen sind
auf dem stack gespeichert werden.
Aber in einigen Stackoverflow Fragen, wie
Wie wird Speicher für eine statische variable?
Es wurde beschrieben, wie
Statischen Variablen gespeichert werden auf dem heap, unabhängig davon, ob Sie deklariert sind, als ein Verweistyp oder ein Werttyp ist. Es gibt nur eine
slot insgesamt, egal wie viele Instanzen erstellt werden.
So, ich bin verwirrt mit stack-oder heap-Speicher für statische Klassen. Wie wird Speicher für eine statische Klasse und warum? Wie wird Speicher für die singleton-Klasse?
ja.was ist mit static Variablen ?
Statische Variablen gespeichert werden irgendwo auf dem heap.
wenn Sie eine Instanz einer Klasse,es wird gespeichert werden, in den Haufen,aber Haufen hat einige Bereiche für statische und nicht-statische Variablen.
Der ganze Punkt, der mit einem verwalteten Speicher Sprache ist, so dass Sie nicht haben, um zu überlegen, wo der Speicher für die Variablen gespeichert ist.
InformationsquelleAutor SivaRajini | 2015-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klassen wird nicht Speicher, sondern Objekte. Die Aussage "statische Klasse gespeichert in stack" klingt absurd für mich.
Klassen werden nicht im Speicher gespeichert. Wenn eine Klasse geladen wird, deren Metadaten können in den Speicher geladen und zwischengespeichert. Abgesehen davon, dass die Klassen werden nicht im Speicher gespeichert.
Frage sich, dass, wenn statische Klassen gespeichert wurden, in den Stapel, wie können Sie in der Lage, es in alle threads?
Statische Variablen
Finden dieser Artikel für mehr info
Bitte aufhören zu Lesen, dass blog-post oder eines blog-posts von diesem Autor. Es ist völlig absurd.
Ich denke , statische Klasse hat ein Gedächtnis.Bitte Lesen Sie meine Antwort, und wenn ich falsch korrigiert mich
Statische Klasse ist nicht überall gespeichert. Aber statische Felder gespeichert werden. Es ist gespeichert in den heap in einer speziellen Lage. Zu wissen, was das Besondere location ist, Lesen Sie die blockquote Teil in meiner Antwort
InformationsquelleAutor Sriram Sakthivel
Schön erklärt von Sriram Sakthivel. Grundsätzlich ist der Heap-Speicher ist unterteilt in 2 große Teile. Objekt-heap-Speicher und Loader-heap-Speicher. Gemäß meinem Verständnis Alle nicht statischen Typ der Referenz gespeichert sind, auf das Objekt auf dem heap und alle statischen Objekt(vielleicht ist es Referenz-Typ oder Wert, Typ) gespeichert sind, in loader heap. Gc-arbeiten Sie niemals auf loader heap thats, warum Sie initilized nur einmal und bleiben in Erinnerung durch die Anwendung.
InformationsquelleAutor Red Swan
Statische variable geht auf die besonderen Grund innerhalb Heap.Es heißt High Frequency Heap , alle statischen Variablen gehen die High Frequency Heap in Erinnerung. Objekte in High Frequency Heap ist nicht Müll gesammelt, die von GC und damit statische Variablen zur Verfügung in der gesamten Lebenszeit einer Anwendung.
Müssen wir explizit de-allocate es dann wir haben, um es zu null so, dass GC kann es klar zugewiesenen Speicher.
InformationsquelleAutor Sheo Dayal Singh
Gibt es vier mögliche root-Typen .NET Framework:
https://www.jetbrains.com/help/dotmemory/Analyzing_GC_Roots.html
High Frequency Heap
Statische Daten und Konstanten definiert, die in einem C# - Programm gespeichert sind, über den Haufen. Seit Sie existieren für die Lebensdauer der Anwendung, die Sie nicht brauchen, um eine garbage Collection ausgeführt werden und sind somit gespeichert in einer loader-heap statt der normalen Garbage Collection-heap. Insbesondere statische Daten gespeichert, die Hochfrequenz-heap–einer der loader Haufen, dass gibt es für jede Anwendungsdomäne.
Statische Daten und Konstanten Gespeichert Sind, über den Haufen
InformationsquelleAutor leonidaa