intern() Metodu Nedir ve Ne Zaman Kullanılır?

2016 kez okundu.

intern() metodu, String değerlerin tekrarlamasını ve bellekte fazla yer kaplamasını önlemek için kullanılır. intern() metoduyla belleği daha etkili bir şekilde kullanabilirsiniz. Peki String değerler nasıl tekrarlar?

Eğer iki String’in değerleri aynı ve bellekteki konumları farklıysa yani     str1 != str2 ve str1.equals(str2) true döndürüyorsa ise bu iki String değer tekrarlanmış(duplicate) demektir. String değerler bellekte çok yer kapladıklarından intern() metoduyla String tekrarlamalarının önüne geçmek ve String pool’dan yararlanmak gerçekten çok önemlidir. String pool’la ilgili ayrıntılı bilgi için buraya bakabilirsiniz.

Örneğin String s1 = “abc”; satırıyla oluşturduğunuz String literali belleğin String pool bölümünde saklanırken, String s2 = new String(“abc”); satırıyla oluşturduğunuz String objesi s1 ile aynı değere sahip olmasına rağmen belleğin başka bir bölümünde yeniden oluşturulur. İşte bu durum String tekrarlamasıdır(duplicate).

new anahtar kelimesiyle oluşturduğunuz obje üzerinden intern() metodunu çağırarak JVM’e bu objeyi String pool’a koymasını ve bundan sonra new anahtar kelimesi olmadan oluşturulan “abc” nesneleri için bu objenin geriye döndürülmesini söylersiniz. Böylece yeni bir obje oluşturmadığınız için belleği daha verimli bir şekilde kullanabilirsiniz.

  • intern() metodu JDK 1.1’den beri String sınıfının bir metodudur. intern() metodu çağrıldığında eğer String pool’da, üzerinde intern() metodu çağrılan obje varsa bu obje geriye döndürülür. Eğer yoksa bu obje String pool’a gönderilir.
  • Java 6’da kontrolsüz intern() metodu kullanımı java.lang.OutOfMemory:PermGen space hatasına sebep olurdu. Çünkü String pool, heap belleğin bir bölümü olan PermGen Space bölümünde bulunurdu ve PermGen Space bölümünün default boyutu 64MB’tı. Java 7’de heap belleğin yeniden düzenlenmesiyle bu sorun aşılmış oldu.

 

intern

 

You may also like...

Yorum Yazın

avatar
  Subscribe  
Notify of