Sobes.tech
Junior — Middle

Къде в паметта на Java хранилището се намират обектите от тип низ?

sobes.tech AI

Отговор от AI

В Java, обектите от тип String се съхраняват в специална област от памет, наречена String Pool (пул от низове), която се намира в Metaspace или в PermGen (в по-старите версии на JVM).

Когато се създаде низов литерал, JVM проверява пула: ако такъв низ вече съществува, връща препратка към съществуващия обект; ако не, създава нов обект и го добавя към пула. Това помага за спестяване на памет и ускорява сравняването на низове.

Ако низът се създаде чрез конструктора new String(), обектът се създава в купчината (heap) и няма автоматично да бъде добавен към String Pool, освен ако не се извика явно методът intern().

Пример:

String s1 = "hello"; // низ в пула
String s2 = new String("hello"); // обект в купчината
String s3 = s2.intern(); // s3 препраща към низа в пула