Çöp Toplayıcısı

Örnekte iki döngü içerisinde toplam 11 adet olusturulannesne nesnesi oluşturulmaktadır. Bilgisayarımızda 256 mb ram bulunmaktadır; böyle bir koşulda çöp toplayıcısı devreye girmeyecektir. Nedeni ise, olusturulannesne nesnelerinin java için ayrılan bellekte yeterince yer kaplamamasındandır. Değişikbilgisayar konfigürasyonlarına, sahip sistemlerde, çöp toplayıcısı belki devreye girebilir!
 
class OlusturulanNesne {
    int i = 0 ;
   
    OlusturulanNesne(int y) { // class ismi ile aynı olduğudan class türetilince yapılandırıcı
                              //fonksiyon olarak çalışıyor.
    this.i = y ;
    System.out.println("OlusturulanNesne Nesnesi Olusturuluyor = " + i );
    }
   
    public void finalize() { //Nesne yok edilirken çalışan fonksiyon.
    System.out.println( i +". OlusturulanNesne Nesnesi Yok Edildi" );
    }
}
public class YokEdici {
    public static void main(String args[]) {
       
        for (int y=0 ; y<10 ;y++) {
            OlusturulanNesne e = new OlusturulanNesne(y); //Herseferinde aynı isimde nesne oluşturulur.
        }
       
        //System.gc(); // çöp toplayıcısını çağırdık
               
        for (int y=10 ; y<21 ;y++) {
            OlusturulanNesne e = new OlusturulanNesne(y);
        }
    }
}
 
 
Uygulama sonucuna göre, OlusturulanNesnelerin finalize() yordamı hiç çağrılmayabilir. Nedeni ise, çöp toplayıcısının hiç tetiklenmemiş olmasıdır. Bellekte yeterince boşluk olması yani.

System sınıfının statik bir yordamı olan gc(), çöp toplayıcısının kodu yazan kişi tarafından tetiklenmesini sağlar. Böylece çöp toplayıcısı, çöp haline gelmiş olan nesneleri (kullanılmayan nesneleri) bularak (eğer varsa) bellekten siler. Yukarıdaki uygulamamızı açıklamaya başlarsak; İlk for döngüsünde oluşturulan
OlusturulanNesne nesneleri, döngü bittiğinde çöp halini alacaklardır. Bunun sebebi, ilk for döngüsünün bitimiyle, oluşturulan 10 adet OlusturulanNesne nesnesinin erişilemez bir duruma geleceğidir. Doğal olarak, erişilemeyen bu nesneler, çöp toplayıcısının iştahını kabartacaktır.

Çöp Toplayıcısı
Yorumunuzu Ekleyin

Java Paketleme
Operatorler
Dizi Yapıları
Statik Alanlar
Javada Diziler
Javada Diziler
Yükleniyor...