Wie viele Methoden in einer Klasse werden im Speicher erstellt, wenn ein Objekt in C # erstellt wird? [Duplikat]

8

Ich habe ein paar kleine Zweifel mit Klassen und Objekten.

In einer Klasse habe ich 10 bis 20 Methoden, (unten geteilt)

%Vor%

Beim Erstellen eines Objekts für die oben genannte Klasse. Wie viele Methoden werden gespeichert? Nur die aufrufende Methode oder alle Methoden.

%Vor%

Können Sie mir bitte bei dem obigen Szenario helfen?

    
Anjali 12.08.2016, 05:41
quelle

3 Antworten

5

Keine.

Die Methoden werden nicht im Speicher erstellt , wenn Sie ein Objekt instanziieren, sondern nur die Felder und Eigenschaften.

Die Assembly, die die Methoden enthält, wird geladen, sobald auf einen Teil der Assembly verwiesen wird.

Methoden werden nur dann in den Speicher kompiliert, wenn sie aufgerufen werden. Der JIT (Just-In-Time-Compiler) wandelt die Methoden zu diesem Zeitpunkt von IL in Maschinencode um.

    
Enigmativity 12.08.2016, 06:11
quelle
1

Für eine Instanz wird nur eine Methode erstellt.

Sie können diese Artilce beziehen: In .NET Framework-Interna bohren, um zu sehen, wie die CLR Laufzeitobjekte erstellt

  

Jede Klasse und Schnittstelle wird, wenn sie in eine AppDomain geladen werden   im Speicher durch eine MethodTable-Datenstruktur dargestellt. Das ist ein   Ergebnis der Klassenladeaktivität vor der ersten Instanz der   Objekt wird jemals erstellt. Während ObjectInstance den Status darstellt,   MethodTable repräsentiert das Verhalten. MethodTable bindet das Objekt   Instanz zu den sprachkompilergenerierten speicherkartenbasierten Metadaten   Strukturen durch EEClass. Die Informationen in der MethodTable und der   Von ihm abhängende Datenstrukturen können über verwalteten Code aufgerufen werden   durch System.Type. Ein Zeiger auf die MethodTable kann sogar erfasst werden   in verwaltetem Code über die Type.RuntimeTypeHandle-Eigenschaft.   TypeHandle, das in der ObjectInstance enthalten ist, verweist auf ein   Offset vom Anfang der MethodTable. Dieser Offset beträgt 12 Byte   standardmäßig und enthält GC-Informationen, die wir hier nicht diskutieren.

    
Rahul Tripathi 12.08.2016 05:53
quelle
0
  

wie viele Methoden im Speicher gespeichert werden

Alle. Alle Methoden werden im Speicher gespeichert.
Was noch wichtiger ist, sie werden alle einmal erstellt, unabhängig von der Anzahl der Instanzen.

Also ist diese Aussage nicht präzise: "während ein Objekt für die obige Klasse erstellt wurde ...".

Jeder Assembliertyp erstellt eine Methode im Speicher - Methoden werden nicht für jede Instanz erstellt / kopiert.
Beim Laden der Assembly werden also alle Methoden erstellt und im Speicher gespeichert, und dann wird nur a1 für objcls instance aufgerufen.

    
Yeldar Kurmangaliyev 12.08.2016 05:47
quelle

Tags und Links