Heim > Java > javaLernprogramm > Wird Javas Garbage Collector statische Felder wie „myObject' in „MyUtils' zurückfordern?

Wird Javas Garbage Collector statische Felder wie „myObject' in „MyUtils' zurückfordern?

Patricia Arquette
Freigeben: 2024-11-28 13:21:15
Original
917 Leute haben es durchsucht

Will Java's Garbage Collector Reclaim Static Fields Like `myObject` in `MyUtils`?

Static Field Garbage Collection in Java

Frage:

Betrachten Sie in Java eine hypothetische Dienstprogrammklasse, die nur während verwendet wird Programm-Setup:

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

Wird myObject für die Garbage Collection geeignet sein, wenn dies nicht mehr der Fall ist? benötigt, oder bleibt es für die gesamte Programmlebensdauer bestehen?

Antwort:

Statische Felder sind nicht für die Speicherbereinigung geeignet, während ihre Klasse geladen ist. Sie können nur gesammelt werden, wenn der Klassenlader, der für das Laden dieser Klasse verantwortlich ist, selbst Garbage Collection ist.

Gemäß der Java Language Specification (JLS) Abschnitt 12.7, „Entladen von Klassen und Schnittstellen“:

"Eine Klasse oder Schnittstelle kann genau dann entladen werden, wenn ihr definierender Klassenlader vom Garbage Collector zurückgefordert werden kann [...] Von der geladene Klassen und Schnittstellen Der Bootstrap-Loader darf nicht entladen werden."

Daher bleibt myObject im bereitgestellten Beispiel bestehen, solange die Klasse MyUtils geladen ist. Es wird keine Speicherbereinigung durchgeführt, bis der Klassenlader, der MyUtils geladen hat, auch für die Speicherbereinigung geeignet ist.

Das obige ist der detaillierte Inhalt vonWird Javas Garbage Collector statische Felder wie „myObject' in „MyUtils' zurückfordern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage