Maison > Java > javaDidacticiel > Les littéraux de chaîne sont-ils déjà collectés en Java ?

Les littéraux de chaîne sont-ils déjà collectés en Java ?

DDD
Libérer: 2024-10-30 02:46:29
original
938 Les gens l'ont consulté

 Are String Literals Ever Garbage Collected in Java?

Garbage Collection of String Literals

Q1 : Si une chaîne est définie comme un littéral au moment de la compilation (par exemple, String str = "java"), les déchets seront-ils collectés ?

Pas généralement. Les objets Code contiennent des références à des objets String littéraux, les gardant accessibles. Le garbage collection ne se produit que lorsque les objets de code deviennent inaccessibles.

Q2 : Si la méthode interne est utilisée (par exemple, String str = new String("java").intern()), sera-ce une poubelle collecté ?

L'objet renvoyé sera le même que la chaîne littérale "java", qui est internée au moment du chargement de la classe. Ils ne seront donc pas collectés. Cependant, les chaînes internes qui ne sont pas identiques aux littéraux de chaîne peuvent être récupérées lorsqu'elles deviennent inaccessibles.

Q3 : Est-il logique que les littéraux soient récupérés uniquement lorsque la classe String est déchargée ?

Non. La classe String est essentielle pour la machine virtuelle Java et il est peu probable qu'elle soit déchargée. Les sources affirmant le contraire sont incorrectes.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal