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 ишора мекунад ба сатр дар база