Ich habe beispielsweise eine Variable mit vielen Daten verwendet String data
. Ich wollte einen kleinen Teil dieser Zeichenfolge folgendermaßen verwenden:
this.smallpart = data.substring(12,18);
Nach einigen Stunden des Debuggens (mit einem Speichervisualisierer) stellte ich fest, dass sich das smallpart
Objektfeld alle Daten von erinnerte data
, obwohl es nur die Teilzeichenfolge enthielt.
Als ich den Code geändert habe in:
this.smallpart = data.substring(12,18)+"";
..das Problem wurde gelöst! Jetzt verbraucht meine Anwendung nur noch sehr wenig Speicher!
Wie ist das möglich? Kann jemand das erklären? Ich denke, this.smallpart bezog sich immer wieder auf Daten, aber warum?
UPDATE: Wie kann ich dann den großen String löschen? Wird data = new String (data.substring (0,100)) das tun?
new String(String)
. Siehe stackoverflow.com/a/390854/8946 .