Junior — Middle
Kur Java glabāšanas atmiņā atrodas virknes objekti?
sobes.tech AI
Atbilde no AI
Java valodā virknes objekti (String) tiek glabāti īpašā atmiņas zonā, ko sauc par String Pool (virkņu baseins), un tas atrodas Metaspace vai PermGen (vecākās JVM versijās).
Kad tiek izveidots virknes literal, JVM pārbauda virkņu baseinu: ja tāda virkne jau pastāv, tiek atgriezta atsauce uz esošo objektu; pretējā gadījumā tiek izveidots jauns objekts un ievietots baseinā. Tas palīdz taupīt atmiņu un paātrina virkņu salīdzināšanu.
Ja virkne tiek izveidota ar konstruktoru new String(), objekts tiek izveidots heap'ā (krātuvē) un netiek automātiski ievietots String Pool, kamēr tieši neizsauc intern() metodi.
Piemērs:
String s1 = "hello"; // virkne baseinā
String s2 = new String("hello"); // objekts heap'ā
String s3 = s2.intern(); // s3 atsauce uz virkni baseinā