Maison > Java > javaDidacticiel > Les champs statiques seront-ils collectés lorsqu'ils ne seront plus référencés ?

Les champs statiques seront-ils collectés lorsqu'ils ne seront plus référencés ?

Patricia Arquette
Libérer: 2024-12-16 03:44:18
original
323 Les gens l'ont consulté

Will Static Fields Be Garbage Collected When No Longer Referenced?

Garbage Collection des champs statiques

Une question courante se pose concernant le sort des champs statiques lorsqu'ils ne sont plus référencés. Considérez la classe utilitaire suivante destinée à la configuration du programme :

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

Le champ myObject sera-t-il récupéré une fois qu'il ne sera plus utilisé, ou persistera-t-il tout au long de l'exécution du programme ?

Pour Pour répondre à cette question, nous devons comprendre la nature des variables statiques. Les variables statiques se voient allouer de la mémoire au moment du chargement de la classe et existent pendant toute la durée de vie de la classe. Le garbage collector ne peut pas les récupérer tant que la classe est chargée.

Selon la section 12.7 de la spécification du langage Java (JLS) :

A class or interface may be unloaded if and only if its defining class loader may be reclaimed by the garbage collector [...] Classes and interfaces loaded by the bootstrap loader may not be unloaded.
Copier après la connexion

Par conséquent, les variables statiques dans les classes chargées ne peuvent pas être garbage collection jusqu'à ce que le chargeur de classe correspondant soit lui-même collecté. Comme les classes d'amorçage ne peuvent pas être déchargées, les variables statiques de ces classes persisteront indéfiniment.

Dans le cas de MyUtils, puisqu'il n'est pas chargé par le chargeur de classe d'amorçage, son champ statique myObject peut être récupéré une fois le programme terminé. ne nécessite plus MyUtils, qu'il soit utilisé ou non.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal