Uygulamada kullanılmayan objelerin Garbage Collector tarafından hafızadan silinmesi büyük kolaylık sağlar, yazılan kodlardaki temel sorunların başında bu temizlik işleminin düzgün yapılmamasını dikkate alırsak kolaylığın yanında kodumuzu daha sağlıklı yazma imkanı da verir.
Şunu belirtmekte fayda var, yazdığımız uygulamada gereksiz nesnelerin sayısı fazla değilse Garbage Collector çalışmaz, çöp toplayıcının mimarisine göre silinme işlemi değişiklik gösterebilir. Belleğin boyutuna bakar, gereksiz nesnelerin boyutuna bakar mimarisi gereği silinme işlemi gerekli ise hiçbir tetiklemeye gerek kalmadan temizliğe başlar.Eğer biz gereksiz nesnelerin silinmesi konusunda kararlıysak bunu manuel olarak tetikleyebiliriz. System.gc() ile bu tetikleme işlemi gerçekleştirilebilir.System sınıfının statik metodu olan gc() metodu ile çöp toplayıcısı gereksiz nesneleri bulur ve siler. Çöp toplayıcı değişkene bağlı olmayan nesneleri siler.
public class GC {
public static void main(String args[]) {
İnsan i = new İnsan(4);
new İnsan(2);
System.gc() ;//Garbage Collector çağırıldı..
}} Bu durumda tahmin ettiğiniz gibi i değişkenine bağlı 4 parametresini gönderdiğimiz İnsan tipindeki nesne silinmezken, diğerisilinecektir..Kısacası Garbage Collectoru tetiklerken dikkatli olmalıyız.Eğer değişkene bağlı ise nesnelerimiz sorun yoktur,Çöp toplayıcısı bunusilmeyeceğini garanti eder; ama değişkene bağlamadıysak sıkıntılaryaşayabiliriz. Çöp toplayıcısı gereksiz nesneleri silmeden önce finalize() metoduna gider, orada varsa yapılması gerekenler onları da yaparsonra silme işlemini gerçekleştirir.
Mesela, uygulama içerisinde C'de de olan malloc() fonksiyonu ileyerimizi aldık bu durumda bu yerin geri verilmesini Garbage Collector yapmaz; çünkü Garbage Collectorun silebildiğigereksiz nesneler new ile oluşturulan nesnelerdir.
Nasıl silebiliriz o zaman derseniz, Garbage Collector silmeyi yapmadan hemen önce finalize() metodunu çağırıyorişte bu metodun içinde free() fonksiyonunu kullanırsakaldığımız alanı geri verip boş duruma getirebiliriz.Kısa Bilgi: Bilgisayarınızda sistem güncelleştirmesi veya antivirus yüklemesi/kaldıması dışında tekrar başlat demesi durumunda, bu restart işlemine gerek yoktur.
Bunun yerine muhteşem üçlüyü kullanarak Ctrl + alt + delete -> Görev yöneticisi->proceses->explorer.exe'yi kapatıp, File -> new task ile explorer.exe yazmanız yeterlidir.
Ayni konudaki yazim:
YanıtlaSilhttp://www.kurumsaljava.com/2012/05/17/coplerin-efendisi-garbage-collection/