Eu usei uma variável com muitos dados, digamos String data
. Eu queria usar uma pequena parte dessa string da seguinte maneira:
this.smallpart = data.substring(12,18);
Após algumas horas de depuração (com um visualizador de memória), descobri que o campo de objetos se smallpart
lembrava de todos os dados data
, embora contivesse apenas a substring.
Quando mudei o código para:
this.smallpart = data.substring(12,18)+"";
..o problema foi resolvido! Agora meu aplicativo usa muito pouca memória agora!
Como isso é possível? Alguém pode explicar isso? Eu acho que essa parte pequena continuou fazendo referência a dados, mas por quê?
ATUALIZAÇÃO: Como posso limpar a grande String então? Data = new String (data.substring (0,100)) fará a coisa?
new String(String)
; consulte stackoverflow.com/a/390854/8946 .