L'oggetto String è costruito dinamicamente a runtime ed occupa tante celle quanti sono i caratteri che deve contenere. Il problema è che se crei un oggetto String, poi altre variabili, poi lo distruggi, se vai a crearne un altro e questo non entra nello spazio lasciato libero dal primo, esso verrà messo dopo tutto il resto. E spesso la RAM si satura.
Una soluzione per evitare questo è di dichiarare un oggetto String assegnandogli già una stringa predefinita con una dimensione più grande del massimo che andrà poi a contenere. E dopo svuotarla quando serve.
Esempio:
String miaStringa = "kjdsgfwurgvuiwrghcukwerhctnerihchcgkwejhcgwkehgvkwerhcg";
...
...
miaStringa = "";
oppure
miaStringa ="mia stringa";
In questo modo non frammenti la memoria.