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 smallpart
recordaba 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 .