Se si dispone di due istanze di una stringa e sono uguali, in Java condivideranno la stessa memoria. Come viene implementato sotto il cofano?In che modo java implementa il modello del peso mosca per la stringa sotto il cofano?
MODIFICA: La mia applicazione utilizza un numero elevato di oggetti String, molti dei quali identici. Qual è il modo migliore per utilizzare il pool costante di Java String, in modo da evitare la creazione dell'implementazione del peso mosca personalizzato?
Il fatto che 'String.substring' non allochi un nuovo' char [] 'ora non è più vero. Vedi [questa risposta] (http://stackoverflow.com/a/14161077/4464702). – RAnders00
Questo è corretto.String non implementa più il modello del peso mosca, perché la condivisione dei riferimenti è ora considerata più costosa di quella del "peso" delle stringhe, in parte perché le JVM sono state migliorate per allocare oggetti sullo stack se l'analisi di escape dimostra che l'oggetto non può sopravvivere current stack frame - un'ottimizzazione che si basa sull'oggetto 'char []' non condiviso. – meriton