Junior — Middle
Java depolama belleğinde dizgi nesneleri hangi konumda bulunur?
sobes.tech yapay zeka
AI'dan gelen yanıt
Java'da, String nesneleri (String), String Pool (dize havuzu) adı verilen özel bir bellek alanında saklanır ve bu alan Metaspace veya eski JVM sürümlerinde PermGen'de bulunur.
Bir string literal oluşturulduğunda, JVM string havuzunu kontrol eder: eğer böyle bir dize zaten varsa, mevcut nesneye referans döndürülür; aksi takdirde, yeni bir nesne oluşturulur ve havuza eklenir. Bu, belleği tasarruf etmeye ve dizelerin karşılaştırmasını hızlandırmaya yardımcı olur.
Eğer bir dize new String() yapıcısı kullanılarak oluşturulursa, nesne heap'te (yığın) oluşturulur ve otomatik olarak String Pool'a eklenmez, ta ki intern() yöntemi açıkça çağrılana kadar.
Örnek:
String s1 = "hello"; // havuzda dize
String s2 = new String("hello"); // nesne heap'te
String s3 = s2.intern(); // s3, havuzdaki dizeye referans eder