Ich habe eine Assembly, die eine öffentliche statische Klasse und Member enthält, sie haben einen statischen Konstruktor, der alle statischen Member initialisiert. Wenn ich die Assembly lade, werden alle meine Mitglieder in den Speicher geladen, wenn ja, gibt es dann keine System-Ausnahme?Statische Klasse und Member
Antwort
a: statische Konstruktoren werden nicht geladen, nur weil Sie eine Assembly laden; genau dann, wenn sie sind ausgeführt ist kompliziert und hängt von beforefieldinit
und wenn die statischen Feldern sie aussehen werden zum ersten Mal berührt werden - aber „irgendwann, bevor sie zum ersten Mal zugegriffen werden“ sollte es abdecken :)
b: Verwenden Sie genug Speicher (in Ihrem statischen Konstruktor), um ein OOM zu verursachen? wenn du bist: dann ja! wenn nicht, dann nein! Normalerweise lautet die Antwort "Nein". Und wenn Ihr statischer Konstruktor Dinge wie das Laden externer Daten tut, dann würde ich argumentieren, dass Ihr statischer Konstruktor es falsch macht.
Hinweis: Wenn ein statischer Konstruktor ausfällt, wird er als TypeInitializationException
angezeigt; Die ursprüngliche Ursache wird .InnerException
sein.
- 1. Statische Variable vs. Member
- 2. Wie serialisiert und deserialisiert man statische Member
- 3. Objective c - statische Member und Konstanten
- 4. Statische Member-Objekt-Initialisierungsfehler
- 5. C++ Statische Const Member Variablenverwendung
- 6. Statische Member einer Instanzklasse
- 7. definieren statische Member in C++
- 8. statische Member-Funktion und Thread-Sicherheit
- 9. Statische Member-Funktion für nicht statische Mitglieder
- 10. C# -Klasse und readonly-Member
- 11. UnbefriedigterLinkError über statische Member initialisiert in Klasse in ndk r15
- 12. const Member Funktion modifiziert statische Objekt der eigenen Klasse
- 13. Std :: binden eine statische Member-Funktion in der Klasse
- 14. statische Member der Klasse Get als Parameter übergeben PHP
- 15. F # Statische Member Typ Einschränkungen
- 16. Statische Member Constraint für op_addition
- 17. Können wir mit Hilfe von Instanzvariablen dieser Klasse in Java auf statische Member und statische Funktionen einer Klasse zugreifen?
- 18. Wie nicht-statische Member-Funktion in glutDisplayFunc
- 19. statische Member-Funktion innerhalb der Klassenvorlage Spezialisierung
- 20. PHP-Klasse statische und nicht statische
- 21. C++ Syntax err, abstrahiert statische und Member-Funktion in eine Template-Klasse
- 22. Warum verwenden wir statische Member auf C#?
- 23. Ungültige Verwendung von nicht-statische Member-Funktion - Klasse Memberfunktion aufrufen Eine andere Klasse Memberfunktion
- 24. muss eine nicht-statische Member-Funktion
- 25. Lambda-Bereich für statische Member-Initialisierer
- 26. Statischer Member/Klasse für generisches Repository
- 27. Clang ++ Xcode 4.4 Nicht statische Member Initialisierung und Move Konstruktor
- 28. nicht-statische Member-Funktion reinterpret_cast fehlgeschlagen
- 29. statische Member-Funktion make_shared von shared_ptr
- 30. Statischer Member und Vererbung
Sie werden nach dem ersten Aufruf an die Mitglieder der Klasse initialisiert und sie werden entsorgt, sobald keine Ressource mehr in der Klasse ist. – FCin
@FCin statische Felder sind verwurzelt, so dass sie nicht Müll gesammelt werden; und Dinge, die * Müll gesammelt sind, werden niemals "entsorgt" - sie könnten * "finalisiert" werden (aber das ist nicht garantiert) –
@MarcGravell Also Speicher für statische Objekte wird nie freigegeben? Sie werden das Gedächtnis besetzen, obwohl es keinen Bezug zu ihnen gibt? – FCin