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.
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