Скажем, я использовал переменную с большим количеством данных String data
. Я хотел использовать небольшую часть этой строки следующим образом:
this.smallpart = data.substring(12,18);
После нескольких часов отладки (с визуализатором памяти) я обнаружил, что поле объектов smallpart
запоминает все данные data
, хотя оно содержит только подстроку.
Когда я изменил код на:
this.smallpart = data.substring(12,18)+"";
... проблема была решена! Теперь мое приложение использует очень мало памяти!
Как это возможно? Кто-нибудь может объяснить это? Я думаю, что this.smallpart продолжал ссылаться на данные, но почему?
ОБНОВЛЕНИЕ: Как я могу очистить большую строку тогда? Будет ли data = new String (data.substring (0,100)) действовать?
new String(String)
; см. stackoverflow.com/a/390854/8946 .