Why does appending “” to a String save memory?

I used a variable with a lot of data in it, say String data.
I wanted to use a small part of this string in the following way:

this.smallpart = data.substring(12,18);

After some hours of debugging (with a memory visualizer) I found out that the objects field smallpart remembered all the data from data, although it only contained the substring.

When I changed the code into:

this.smallpart = data.substring(12,18)+""; 

..the problem was solved! Now my application uses very little memory now!

How is that possible? Can anyone explain this? I think this.smallpart kept referencing towards data, but why?

UPDATE:
How can I clear the big String then? Will data = new String(data.substring(0,100)) do the thing?

9 Answers
9

Leave a Comment