Sobes.tech
Junior — Middle

Kur Java saugyklos atmintyje yra eilutės objektai?

sobes.tech AI

Atsakymas iš AI

Java kalboje eilutės objektai (String) saugomi specialioje atminties srityje, vadinamoje String Pool (eilutų baseinas), kuri yra Metaspace arba PermGen (senesnėse JVM versijose).

Kai sukuriamas eilutės literalas, JVM tikrina eilutės baseiną: jei toks eilutė jau egzistuoja, grąžinama nuoroda į esamą objektą; priešingu atveju, sukuriamas naujas objektas ir įdedamas į baseiną. Tai padeda taupyti atmintį ir pagreitinti eilutės palyginimą.

Jei eilutė kuriama naudojant konstruktorių new String(), objektas sukuriamas heap'e (krepšyje) ir automatiškai neįdedamas į String Pool, kol tiesiogiai neiškviečiama intern() metodo.

Pavyzdys:

String s1 = "hello"; // eilutė baseine
String s2 = new String("hello"); // objektas heap'e
String s3 = s2.intern(); // s3 nuoroda į eilutę baseine