Question :
Les littéraux de chaîne sont généralement considérés comme internés et donc non susceptibles d'être collecte des ordures. Cependant, une confusion surgit lors de l'exploration des nuances de la concaténation de chaînes, de la mise en cache des classes String et du déchargement des classes. Pour clarifier, examinons les questions suivantes :
Réponse :
1. Garbage Collection des littéraux au moment de la compilation :
Les littéraux de chaîne, définis au moment de la compilation, durent aussi longtemps que le chargeur de classe qui a chargé le code contenant ces littéraux. Tant que les classes utilisant les littéraux restent chargées, les objets String qui les représentent ne seront pas récupérés. Cependant, si le chargeur de classe est détruit, les littéraux peuvent être soumis au garbage collection.
2. Méthode intern et Garbage Collection :
L'appel de la méthode intern sur une chaîne renvoie le même objet représentant la chaîne littérale. En tant que telle, la chaîne interne a la même durée de vie que le littéral lui-même. Cependant, les chaînes créées à l'aide de new qui ne sont pas identiques aux chaînes littérales peuvent être récupérées si elles deviennent inaccessibles.
3. Déchargement de classe et littéraux de chaîne :
Il est incorrect de prétendre que les littéraux ne sont récupérés que lorsque la classe String est déchargée. Java ne décharge pas ses classes principales, y compris la classe String. Les littéraux de chaîne sont conservés tant que le code qui les référence reste actif.
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!