Ho visto la maggior parte delle volte che lo sviluppatore dichiara la stringa sotto la moda
Metodo 1: -
public void method1(){
String str1 ="Test";
}
Approccio 2: -
Per mia comprensione, l'approccio migliore sarà
public void method2(){
String str2 = new String("Test");
}
Sempre in base alla mia comprensione, il secondo approccio è migliore del primo, perché i valori letterali String sono internati e memorizzati in permgen. Quindi non sarà GC'ed anche il thread esce dall'approccio 1, ma nel secondo approccio lo str2 sarà GC (lo Str 2 non sarà internato) poiché il thread esce dal metodo 2 e GC viene eseguito mentre è memorizzato nell'heap non permgen.
La mia comprensione è corretta?
Per mia comprensione dovrei letterale se la stessa stringa verrà creata ancora e ancora, dato che sarà buona per il punto di vista delle prestazioni altrimenti vai per la nuova String () in modo che possa essere GC una volta non utilizzata?
Link correlati string-literal-String-Object