Eine Klasse besteht normalerweise aus Elementvariablen & Methoden. Wenn wir eine Instanz einer Klasse erstellen, wird Speicher für Membervariablen einer Klasse reserviert. Speichern Member-Methoden auch Speicher? Wo werden diese Methoden gespeichert?Speichert Klassenmitglieder Speicher?
Antwort
Sagen wir die folgende Klasse haben:
public class Person
{
public string Name { get; set; }
public Person(string name)
{
Name = name;
}
public string SayName()
{
string hello = "Hello! My name is ";
return hello + name;
}
}
Person p = new Person("John");
string yourName = p.SayName();
Die SayName()
Funktion geht auf die Call Stack
, und das Person p
Objekt und es ist Eigenschaften (Name
) in Erinnerung bleiben wird, bis die Garbage Collection
kommt und reinigt ihn.
In Bezug auf Speicher sollten Sie mehr mit den Instanzfeldern (Eigenschaften) des Objekts, der Anzahl der Objekte, die Sie beschäftigen, und ob Ihr Objekt eine Zeit von Reader
oder Connection
ist. Wenn Ihr Objekt ein Reader
oder Connection
ist, müssen Sie eine using
Anweisung in Betracht ziehen.
Pseudo-Code:
using(DatabaseConnection dbConn = new DatabaseConnection()
{
// Process your calls and data
}
// The object is Disposable and it's resources are cleared
"Die Variablen in SayName(), die wäre hallo, bleibe nur im Speicher, während die Funktion im Bereich ist. Sobald die Funktion beendet ist, ist die Variable nicht mehr im Speicher. " Nicht ganz richtig, der GC kann sie sammeln, sobald die Referenz nicht mehr benötigt wird (und dies schließt "das" ein!) – porges
Ja. Das ist wahr. Ich denke, ich hätte den Zugang klarer machen müssen. –
"einige Zeit von' Reader' oder 'Connection'" - einfach generalisierend zu 'IDisposable' ist wahrscheinlich klarer, IMO –
Klasse ist nur ein blauer Druck, Es spielt belegt keinen Raum, solange Variable vom Typ Klasse nicht definiert hat. Sobald das Objekt/die Instanz der Typklasse definiert ist, belegt das Klassenmitglied Speicherplatz im Speicher. Und die Größe der Instanz ist gleich der Summe der Größe der Mitglieder in der Klasse definieren.
- 1. Speichert express.static() Dateien im Speicher?
- 2. Speichert MemoryDC Speicher oder den Speicher auf der Grafikkarte?
- 3. Wie speichert C verschiedene Datentypen im Speicher?
- 4. Warum speichert der Python __slots__ keinen Speicher?
- 5. Statische Klassenmitglieder python
- 6. Klassenmitglieder - Java vs. Python
- 7. Verwirrt, wie Klassenmitglieder
- 8. PHP Klassenmitglieder und Methoden
- 9. Generische Klassenmitglieder in C#?
- 10. Verschlüsse als Klassenmitglieder?
- 11. Mehrdeutige Klassenmitglieder in vb.net
- 12. Benutzerdefinierte Attribute für Klassenmitglieder
- 13. Zerstörung der Klassenmitglieder, wenn destructor nicht
- 14. Zugreifen auf C# -Klassenmitglieder in IronPython
- 15. Bloodhound speichert keine Daten von Remote-Abrufen im lokalen Speicher
- 16. Wie man ein Objekt dauerhaft im Speicher mit Spark speichert?
- 17. Speichert eine nicht verwendete Importdeklaration Speicher in Java?
- 18. Wie speichert man den mobilen Status einer Anwendung im Speicher?
- 19. Serialisierung von POCO ohne Klassenmitglieder
- 20. Klassenmitglieder einer Klasse in Typoskript
- 21. Wie vermeidet man geschützte Klassenmitglieder?
- 22. Wann werden statische C++ - Klassenmitglieder initialisiert?
- 23. C++: Ändern der Klassenmitglieder Werte von Funktionen
- 24. Zugriff auf Klassenmitglieder eines Webservice in silverlight
- 25. nicht aufgelöstes externes Symbol auf statische Klassenmitglieder
- 26. Wie kann ich über Klassenmitglieder iterieren?
- 27. C++ - Lambda-Ausdruck, Capture-Klausel und Klassenmitglieder
- 28. Name suchen für lokale Klassenmitglieder in Vorlagen
- 29. Java statische Klassenmitglieder und Scala Interoperabilität
- 30. Wofür werden Zeiger auf Klassenmitglieder verwendet?
Methodenimplementierungen belegen Speicher pro Typ (und ich glaube, dass pro Verfeinerung mit Generics?), Aber das * nicht * erhöht sich pro Objektinstanz. Z.B. 'obj.GetType()' gibt den Typ zurück, der diese Methoden repräsentiert (und eine Menge anderer Dinge). Die (Instanz) * Variablen * sind natürlich pro Instanz. –
@pst, warum Post so gute Antwort als Kommentar? –
@AlexeiLevenkov macht einen feinen Punkt. Ich hätte das definitiv gewählt, und ich beantwortete diese Frage selbst mit dem, was ich für eine ziemlich anständige Antwort halte. –