J'ai utilisé une variable contenant beaucoup de données, par exemple String data
. Je voulais utiliser une petite partie de cette chaîne de la manière suivante:
this.smallpart = data.substring(12,18);
Après quelques heures de débogage (avec un visualiseur de mémoire), j'ai découvert que le champ objets se smallpart
souvenait de toutes les données data
, bien qu'il ne contienne que la sous-chaîne.
Quand j'ai changé le code en:
this.smallpart = data.substring(12,18)+"";
..le problème a été résolu! Maintenant, mon application utilise très peu de mémoire maintenant!
Comment est-ce possible? Quelqu'un peut-il expliquer cela? Je pense que this.smallpart a continué à faire référence aux données, mais pourquoi?
MISE À JOUR: Comment puis-je effacer la grosse chaîne alors? Est-ce que data = new String (data.substring (0,100)) fera l'affaire?
new String(String)
; voir stackoverflow.com/a/390854/8946 .