Si tiene dos instancias de String, y son iguales, en Java compartirán la misma memoria. ¿Cómo se implementa esto bajo el capó?¿Cómo implementa Java el patrón de peso mosca para la cuerda debajo del capó?
EDITAR: Mi aplicación utiliza una gran cantidad de objetos String, muchos de los cuales son idénticos. ¿Cuál es la mejor forma de utilizar el conjunto constante de Java String para evitar la creación de una implementación flyweight personalizada?
El hecho de que 'String.substring' no asigne un nuevo' char [] 'ya no es verdadero. Ver [esta respuesta] (http://stackoverflow.com/a/14161077/4464702). – RAnders00
Eso es correcto.String ya no implementa el patrón flyweight, porque el intercambio de referencia ahora se considera más costoso que reducir el "peso" de Strings, en parte porque las JVM se han mejorado para asignar objetos en la pila si el análisis de escape demuestra que el objeto no puede sobrevivir al marco de pila actual: una optimización que se basa en el objeto 'char []' que no se comparte. – meriton