Curiosidades Java: Optimización de Strings (I)

Para quien lleve bastante tiempo con Java, sabrá lo que voy a contar a continuación, pero para los que se inician en el lenguaje esto les será muy útil. Dentro de la optimización de Strings voy a tratar dos temas distintos en sendas entradas, relacionadas con cómo la JVM maneja la memoria.

Hoy, en primer lugar, os voy a plantear una pregunta (no, no hay premio para el que acierte, además os voy a decir la solución :P).

La pregunta es la siguiente:

Si tenemos el siguiente fragmento de código:

String a = "Hola Mundo";
String b = a;

¿Cuántas regiones de memoria utilizará la JVM para almacenar ambas cadenas?






La solución es UNA. Se crearán dos punteros apuntando a la misma dirección de memoria. Y alguno pensará: "¿Y si cambio b también se cambia a?". Pues no, la JVM en el momento en que b cambia, creará otra región de memoria en la que almacenará el valor de b. Esta operación supone una optimización del manejo de las cadenas llevada a cabo por la JVM.

Muy bueno,yo la pregunta la acerte.

Hace tiempo estube leyendo algo de C,lo cual no me gusto porque no me manejo muy bien con la memoria.

Por algo estoy estudiando JAVA, ¿No? jaja

Le veo con mucho futuro a Java.