Heim >Java >javaLernprogramm >Wann können statische Felder als Garbage Collection erfasst werden?
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.
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.
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!