Jeśli masz dwa wystąpienia ciągu i są one równe, w Javie będą współużytkować tę samą pamięć. W jaki sposób jest to realizowane pod maską?W jaki sposób java implementuje wzór maski pod ciągiem pod maską?
EDYCJA: Moja aplikacja używa dużej liczby obiektów String, z których wiele jest identycznych. Jaki jest najlepszy sposób korzystania ze stałej puli Java String, aby uniknąć tworzenia niestandardowej implementacji flyweight?
Fakt, że 'String.substring' nie przydziela nowego' char [] 'nie jest już prawdą. Zobacz [tę odpowiedź] (http://stackoverflow.com/a/14161077/4464702). – RAnders00
To prawda.Łańcuch nie implementuje już wzorca masy, ponieważ udostępnianie referencji jest teraz uważane za droższe niż zmniejszenie "wagi" łańcuchów znaków, częściowo dlatego, że maszyny JVM zostały ulepszone w celu przydzielania obiektów na stosie, jeśli analiza ucieczki udowodni, że obiekt nie może przeżyć current stack frame - optymalizacja polegająca na tym, że obiekt "char []" nie jest współdzielony. – meriton