"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Os literais de string são sempre coletados como lixo em Java?

Os literais de string são sempre coletados como lixo em Java?

Publicado em 2024-11-08
Navegar:781

 Are String Literals Ever Garbage Collected in Java?

Coleta de lixo de literais de string

Q1: Se uma string for definida como literal em tempo de compilação (por exemplo, String str = "java"), será coletado como lixo?

Normalmente não. Objetos de código contêm referências a objetos String literais, mantendo-os acessíveis. A coleta de lixo ocorre apenas quando os objetos de código se tornam inacessíveis.

Q2: Se o método interno for usado (por exemplo, String str = new String("java").intern()), será lixo coletado?

O objeto retornado será igual ao literal da string "java", que é internado no momento do carregamento da classe. Portanto, não será coletado lixo. No entanto, strings internas que não são idênticas a literais de string podem ser coletadas como lixo quando se tornam inacessíveis.

Q3: Faz sentido que literais sejam coletados como lixo somente quando a classe String for descarregada?

Não. A classe String é essencial para a Java Virtual Machine e é improvável que seja descarregada. Fontes que afirmam o contrário estão incorretas.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3