Java Language Riduzione della quantità di stringhe

Esempio

In Java, è troppo "facile" creare molte istanze String che non sono necessarie. Questo e altri motivi potrebbero far sì che il tuo programma abbia molte stringhe che il GC è impegnato a ripulire.

Alcuni modi in cui potresti creare istanze String:

myString += "foo";

O peggio, in un ciclo o ricorsione:

for (int i = 0; i < N; i++) {
    myString += "foo" + i;
}

Il problema è che ogni + crea una nuova stringa (di solito, poiché i nuovi compilatori ottimizzano alcuni casi). Una possibile ottimizzazione può essere fatta usando StringBuilder o StringBuffer :

StringBuffer sb = new StringBuffer(myString);
for (int i = 0; i < N; i++) {
    sb.append("foo").append(i);
}
myString = sb.toString();

Se si costruiscono spesso stringhe lunghe (ad esempio SQL), utilizzare un'API di costruzione di stringhe.

Altre cose da considerare:

  • Ridurre l'uso di replace , substring ecc.
  • Evitare String.toArray() , specialmente nel codice di accesso frequente.
  • Le stampe di registro che sono destinate a essere filtrate (a causa del livello di registro per esempio) non dovrebbero essere generate (il livello di registro deve essere controllato in anticipo).
  • Usa librerie come questa se necessario.
  • StringBuilder è migliore se la variabile viene utilizzata in modo non condiviso (attraverso thread).