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"); // օբյեկտ heap-ում
String s3 = s2.intern(); // s3 հղում է դեպի ավազանում գտնվող տողը