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
DDDoriginal
2024-10-30 02:46:29944parcourir

 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!

Déclaration:
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