es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿La función String.intern tiene algo que ver con la piscina de constantes de tiempo de ejecución de la JVM?

Según el documento “jvms11”, existen dos tipos de entrada en la pool de constantes en tiempo de ejecución: referencias simbólicas, que pueden resolverse más tarde, y constantes estáticas, que no requieren ningún procesamiento adicional. Las constantes estáticas en la pool de constantes en tiempo de ejecución también se derivan de las entradas en la tabla constant_pool de acuerdo con la estructura de cada entrada.

Según mi comprensión, String.intern no tiene nada que ver con la pool de constantes en tiempo de ejecución JVM, pero alguien que es uno de los mejores programadores de China dijo en su popular libro que String.intern “pondría algo en la pool de constantes en tiempo de ejecución durante la ejecución”. Discutimos esto durante mucho tiempo y ninguno pudo convencer al otro.

Entonces mi pregunta es, ¿String.intern tiene algo que ver con la pool de constantes en tiempo de ejecución JVM?

Aquí está el apartado 5.1 del documento jvms sobre la pool de constantes en tiempo de ejecución: Enlace

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según mi experiencia, String.intern tiene algo que ver con el pool de constantes del tiempo de ejecución de la JVM. Cuando se crea un nuevo objeto String y se interna utilizando el método intern, la JVM verifica si ya existe un objeto String equivalente en el pool. Si existe, se retorna el objeto existente; si no existe, se agrega una nueva entrada al pool y se retorna una referencia a esta nueva entrada. Por lo tanto, String.intern puede agregar nuevas entradas al pool de constantes del tiempo de ejecución durante la ejecución, las cuales pueden ser accedidas por otros objetos que hagan referencia al mismo literal de String.

Comments are closed.