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"), sera-t-il récupéré ?
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 indiquant le contraire sont incorrectes.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3