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 smallpartsouvenait 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 .