Sobes.tech
Junior — Middle

Java შენახვის მეხსიერებაში სტრინგის ობიექტები სად მდებარეობს?

sobes.tech AI

პასუხი AI-სგან

Java-ში, სტრიქონის ობიექტები (String) ინახება სპეციალურ მეხსიერების ზონაში, რომელსაც უწოდებენ String Pool (სტრიქონების აუზი), და ეს ზონა მდებარეობს Metaspace-ში ან PermGen-ში (ძველი JVM ვერსიებში).

როდესაც ქმნიან სტრიქონის ლიტერალს, JVM ამოწმებს სტრიქონების აუზს: თუ ასეთი სტრიქონი უკვე არსებობს, ის აბრუნებს მითითებას არსებულ ობიექტზე; წინააღმდეგ შემთხვევაში, ქმნის ახალ ობიექტს და სვამს მას აუზში. ეს ეხმარება მეხსიერების დაზოგვაში და სტრიქონების შედარების სიჩქარის გაზრდაში.

თუ სტრიქონი შექმნილია new String() კონსტრუქტორის გამოყენებით, ობიექტი იქმნება heap-ზე და ავტომატურად არ იდება სტრიქონების აუზში, სანამ არ გამოიძახება intern() მეთოდი.

მაგალითი:

String s1 = "hello"; // სტრიქონი აუზში
String s2 = new String("hello"); // ობიექტი heap-ზე
String s3 = s2.intern(); // s3 მითითება სტრიქონის აუზზე