Java Garbage Collector

Java dilinde herhangi bir sınıftan bir nesne oluşturmak için “new” operatörü, Class.forName().clone(), readObject() veya newInstance() metodları kullanılabilir. Örneğin new operatörü sınıfın construct’ını kullanarak Java Virtual Machine bünyesinde yeni bir nesne oluşturur. Nesne inşa edildikten sonra Java heap  içinde konuşlandırılır. Nesnelerin hepsi kullanıldıkları sürece heap icinde kullanılırlar. Ama programın nesne ile işi bittiğinde bu nesne çöp haline gelir. Java virtual machine içinde oluşan bu çöp nesneleri tamamen temizleyen yapı Garbage Collector yapısıdır. Garbage collector kullanılmayan nesneyi silmesi için o nesnenin kullanılmaması ve herhangi bir neseneden referansı olmaması gerekmektedir.

Bir nesneyi kullandıktan sonra null değeri atanmış ise bu nesne artık çöp nesne olmuştur ve garbage collector ile kaldırılacaktır. Örneğin;

  • Employee e=new Employee();  
  • e=null

Başka bir garbage collector durumu ise bir nesneyi başka bir nesneye atadığımızda da eski nesne artık garbage collector ile kaldırılma durumuna gelmiştir.Örneğin;

  • Employee e1=new Employee();  
  • Employee e2=new Employee();  
  • e1=e2; // Burada e1 nesnesi artık garbage collector ile kaldırılacaktır

Peki garbage collector nasıl çağrılabilir:

1.finalize() : Finalize yöntemi nesne çöp toplanmadan önce her defasında çağrılır.

  • protected void finalize(){}  

2. gc() Method : Gc yöntemi çöp toplayıcısını temizleme işlemi gerçekleştirmek için çağırmak için kullanılır. Gc , Sistem ve Çalışma Zamanı Sınıflarında bulunur.

  • public static void gc(){}  

Basit bir garbage collector örneğinin java kodunu aşağıda bulabilirsiniz:

public class TestGarbage1{  

 public void finalize(){System.out.println(“garbage collector”);}  

 public static void main(String args[]){  

  TestGarbage1 s1=new TestGarbage1();  

  TestGarbage1 s2=new TestGarbage1();  

  s1=null;  

  s2=null;  

  System.gc();  

 }  

Erman Ağ Geliştirici on 9 Ağustos 2017 yazdı
Yorum Ekle
  • 0 Yanıt(lar)
  • Yanıtınız

    Cevabınızı göndererek Gizlilik Politikası ve Hizmet Şartlarını kabul ediyorsunuz.