Junior — Middle
A Java-tároló memória melyik helyén találhatók a sztring-objektumok?
sobes.tech MI
Válasz az MI-től
Java-ban a sztringobjektumok (String) egy speciális memória területen tárolódnak, amit String Pool-nak (sztringmedence) neveznek, és ez a Metaspace-ben vagy a PermGen-ben helyezkedik el (régi JVM verziókban).
Amikor egy sztring literált hozunk létre, a JVM ellenőrzi a sztringmedencét: ha ilyen sztring már létezik, akkor egy hivatkozást ad vissza a meglévő objektumra; különben egy újat hoz létre és a medencébe helyezi. Ez segít a memória megtakarításában és a sztringek összehasonlításának gyorsításában.
Ha egy sztringet a new String() konstruktorral hozunk létre, az objektum a heap-en jön létre, és nem kerül automatikusan a String Pool-ba, kivéve, ha kifejezetten meghívjuk az intern() metódust.
Példa:
String s1 = "hello"; // sztring a medencében
String s2 = new String("hello"); // objektum a heap-en
String s3 = s2.intern(); // s3 a medencében lévő sztringre hivatkozik