"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Alguna vez se recolectan basura los literales de cadena en Java?

¿Alguna vez se recolectan basura los literales de cadena en Java?

Publicado el 2024-11-08
Navegar:278

 Are String Literals Ever Garbage Collected in Java?

Recolección de basura de literales de cadena

P1: si una cadena se define como un literal en el momento de la compilación (por ejemplo, String str = "java"), ¿se recolectará basura?

No suele ser así. Los objetos de código contienen referencias a objetos String literales, lo que los mantiene accesibles. La recolección de basura solo ocurre cuando los objetos de código se vuelven inaccesibles.

P2: Si se usa el método interno (por ejemplo, String str = new String("java").intern()), ¿será basura? ¿recopilado?

El objeto devuelto será el mismo que el literal de cadena "java", que se interna en el momento de carga de la clase. Por lo tanto, no se recogerá basura. Sin embargo, las cadenas internas que no son idénticas a los literales de cadena pueden ser recolectadas como basura cuando se vuelven inaccesibles.

P3: ¿Tiene sentido que los literales sean recolectados como basura solo cuando se descarga la clase String?

No. La clase String es esencial para la máquina virtual Java y es poco probable que se descargue. Las fuentes que indican lo contrario son incorrectas.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3