Usé una variable con muchos datos, digamos String data. Quería usar una pequeña parte de esta cadena de la siguiente manera:
this.smallpart = data.substring(12,18);
Después de algunas horas de depuración (con un visualizador de memoria) descubrí que el campo de objetos smallpartrecordaba todos los datos data, aunque solo contenía la subcadena.
Cuando cambié el código a:
this.smallpart = data.substring(12,18)+"";
..¡El problema fue resuelto! ¡Ahora mi aplicación usa muy poca memoria ahora!
¿Cómo es eso posible? ¿Alguien puede explicar esto? Creo que this.smallpart siguió haciendo referencia a los datos, pero ¿por qué?
ACTUALIZACIÓN: ¿Cómo puedo borrar la cadena grande entonces? ¿Data = new String (data.substring (0,100)) hará lo mismo?
new String(String); ver stackoverflow.com/a/390854/8946 .