Heim >Java >javaLernprogramm >Wann können statische Felder als Garbage Collection erfasst werden?

Wann können statische Felder als Garbage Collection erfasst werden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-30 18:51:19305Durchsuche

When Can Static Fields Be Garbage Collected?

Wann sind statische Felder für die Garbage Collection geeignet?

Eine Klasse, die statische Variablen enthält, wird niemals vom Garbage Collector entladen, solange die Klasse geladen ist. Statische Variablen bleiben für die Dauer des Programms im Speicher, auch wenn die Klasse nicht mehr verwendet wird.

Beispiel

class MyUtils {
   private static MyObject myObject = new MyObject();
   /*package*/static boolean doStuff(Params... params) {
       // do stuff with myObject and params...
   }
}

In diesem Beispiel ist myObject eine statische Variable, also ist es ist erst dann für die Garbage Collection geeignet, wenn die MyUtils-Klasse entladen wurde. Da die Klasse nie entladen wird, bleibt myObject für die gesamte Lebensdauer des Programms im Speicher.

Ausnahmen

Der JLS-Abschnitt 12.7 Entladen von Klassen und Schnittstellen besagt, dass eine Klasse oder Schnittstelle nur sein darf entladen, wenn sein definierender Klassenlader vom Garbage Collector zurückgefordert werden kann. Vom Bootstrap-Loader geladene Klassen und Schnittstellen dürfen möglicherweise nicht entladen werden.

Das obige ist der detaillierte Inhalt vonWann können statische Felder als Garbage Collection erfasst werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn