6 Stimmen

Müllsammler und statische Klasse, Variable

Ein Punkt beschäftigt mich seit den letzten Tagen. Ich möchte wissen, wie der Garbage Collector mit statischen Klassen und Variablen arbeitet.

Wie wir alle wissen, behält der Garbage Collector den Überblick über die Objekte, die in der Anwendung erstellt wurden, und entfernt sie automatisch, wenn sie nicht mehr verwendet werden. Für statische Klassen wird kein Objekt erstellt und sie werden beim Debuggen der Anwendung im Speicher geladen.

Also, wie geht der Garbage Collector mit statischen Klassen um?

12voto

Stilgar Punkte 21139

Statische Klassen müssen nicht entfernt werden, da sie keine Objekte sind und keinen Speicher verbrauchen (abgesehen vom tatsächlichen Klassencode, der von der .NET-Infrastruktur geladen wird). Auf der anderen Seite sind statische Felder in statischen Klassen Objekte, die Speicher verbrauchen. Sie werden nicht eingesammelt, da sie während der gesamten Lebensdauer der Anwendung zugänglich sind. Wenn Sie den Speicher freigeben möchten, sollten Sie das Feld auf null setzen, damit das Objekt, auf das das Feld gezeigt hat, für die Garbage Collection geeignet wird

1voto

Royi Namir Punkte 137891

Er wird sie nie freigeben. (zum Beispiel im Web bis zum Neustart des IIS).

Sie werden nie sagen: "Niemand verweist auf mich, also bin ich frei zu gehen"

auch

man kann nie etwas Neues zu einer statischen Klasse hinzufügen.... also wird sie ausschließlich durch ein Klassenobjekt verwendet (nicht die Instanz).

Also .NET geht kein Risiko ein und hält es aus dem Garbage Collector heraus.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X