我说,我使用了一个包含大量数据的变量String data.我想以下列方式使用此字符串的一小部分:
this.smallpart = data.substring(12,18);
Run Code Online (Sandbox Code Playgroud)
经过几个小时的调试(使用内存可视化器)后,我发现对象字段smallpart记住了所有数据data,尽管它只包含子字符串.
当我将代码更改为:
this.smallpart = data.substring(12,18)+"";
Run Code Online (Sandbox Code Playgroud)
..问题解决了!现在我的应用程序现在使用很少的内存!
怎么可能?有谁能解释一下?我认为这个小部分一直在引用数据,但为什么呢?
更新: 如何清除大字符串呢?data = new String(data.substring(0,100))会做什么吗?