Maison >Java >javaDidacticiel >Les littéraux de chaîne sont-ils déjà collectés en 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!