我说了一个变量,里面有很多数据String data
。我想通过以下方式使用此字符串的一小部分:
this.smallpart = data.substring(12,18);
经过数小时的调试(使用内存可视化器),我发现objects字段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。