Çöp toplayıcısının temel görevi kullanılmayan nesneleri bularak bellekten silmektir. Sun Microsptems tarafından tanıtılan Java HotSpot VM (Virtual Machine) sayesinde heap bölgesindeki nesneler nesillerine göre ayrılmaktadır. Bunlar eski nesil ve yeni nesil nesneler olmak üzere iki çeşittir. Belli başlı parametreler kullanmak Java HotSpot VM mekanizmasını denetlemek mümkündür; bizlere sağlandığı hazır pa-rametreler ile normal bir uygulama gayet performanslı çalışabilir. Eğer sunucu üze-rinde uygulama geliştiriliyorsa, Java HotSpot VM parametrelerini dogru kullanarak uygulamanın perfornıansının arttırmak mümkündür. Daha önceden söz edildiği gibi nesnelerin bellekten silinmesi görevi programcıya ait değildir. Bu işlem tamamen çöp toplayıcısının sorumluluğundadır. Java HotSpot VM ait çöp toplayıcısı iki konuyu kullarmılara garanti etmektedir.
• Kullanılmayan nesnelerin kesinlikle bellekten silinmesini sağlamak.
• Nesne bellek alanının parçalanmasını engellemek ve belleğin sıkıştınlmasını sağlamak.
Bu bölümde dört adet çöp toplaına algoritmasından bahsedilecektir, bunlardan ilki ve en temel olanı referans Sayma yöntemidir, bu yöntem modern JVM’ler (java Virtual Machine) tarafından artık kullanılmamaktadır.
O Eski Yöntem
• Referans Sayma Yöntemi
Bu yöntemde, bir nesne oluşturulur oluşturulmaz ona ait bir sayaç çalıştırılmaya başlar ve bu sayacın ilk değeri birdir. Bu nesneınizin ismi x olsun. Bu sayacın saydığı şey, oluşturdugumuz nesneye kaç adet referansın bağlı olduğudur. Ne zaman yeni bir referans bu x nesnesine bağlanırsa, bu sayacın değeri bir artar. Aynı şekilde ne zaman bu x nesnesine bağlı olan bir referans geçerlilik alanı dı-şına cıksa veya bu referans esas 1 değerine eşitlenirse, x nesnesine ait bu saya-cııı değeri bir eksilir. Eğer sayaç sıfır değerini gösterirse, x nesnemizin artık bu dünyadan ayrılma zamanı gelmiş demektir ve çöp toplayıcısi tarafından bellekten silinir. Bu yöntem, kısa zaman aralıkları ile çalıştırıldığında iyi sonuçlar vermektedir; gerçek zamanlı uygulamalar için uygun olduğu söylenebilir. Fakat bu yöntemin kötü yanı, döngüsel ilişkilerde referans sayacının doğru değerler göstermemesidir. Örneğin iki nesne olsun, birisi A nesnesi digeri ise B nesnesi olsun. Eğer A nesnesi, B nesnesine, B nesnesi de, A nesnesine döngüsel bir biçimde işe ediyor. ise bu nesneler artık kullanılmıyor olsa dahi bu nesnelere ait bir zaman sayacı sıfır olmaz ve bu nedenle çöp toplayıcı tarafından bellekten silinmezler.
O Yeni Yöntemler
Toplam 3 adet yeni çöp toplama yönetimi vardır. Her üç yöntemin de yaşayan,yaşayan nesneleri bulma stratejisi aynıdır. Bu strateji bellek içerisinde yer alan statik veya yığın alanındaki referansların bağlı bulunduğu nesneler aranarak bulunur.Eğer geçerli bir referans bir nesneye bağlıysa, bu nesne uygulama tarafından kullanılıyor demektir.
• Kopyalama yöntemi
Oluşturulan bir nesne, ilke olarak heap bölgesindeki yeni nesil alanında yeri, toplayıcı. tarafından silinmemiş ise belirli alır. Eğer bu nesne zaman içinde çöp demektir ve heap bölgesindeki eski nesil alanına geçmeye bir olgunluga ulaşmış hak kazanır. Yeni nesil bölgeleri arasında kopyalanma işlemi ve bu alandan , nesil alanına kopyalanma işlemi, kopyalama yöntemi sayesinde gerçekleşir.
• İşaretle ve süpür yöntemi
Nesneler zaman içinde belli bir olgunluga erişince heap bölgesindeki eski nesil alanına taşındıklarını belirtmiştik. Eski nesil alanındaki nesneleri bellekten silmek ve bu alandaki parçalanmalan engellemek için isaretle ve süpür yöntemi kullanılır. Isaretle ve süpür yöntemi, kopyalama yöntemine göre daha yavaş çalışmaktadır.
• Artan (sıra) yöntemi
Kopyalama yöntemi veya isaretle ve süpür yöntemi uygulamanın üretmiş oldugu büyük nesneleri bellekten silerken kullanma tarafından fark edilebilir bir duraksama oluşturabilirler. Bu fark edilir duraksamalan ortadan kaldırmak için Java HotSpot VM artan yönetimini geliştirmiştir. Artan yöntem büyük nesnelerin bellekten silinmeleri için orta nesil alanı oluştu-rur. Bu alan içerisinde küçük küçük birçok bölüm vardır. Bu sayede büyük etmeleri bellekten silerken oluşan fark edilir duraksamalar küçük ve fark ediliredilmez, duraksarnalara dönüştürülmektedir. Artan yöntemi devreye sokmak -Xincgc, çıkartmak için ise -Xnocgc parametreleri kullanılır. java HotSpot normal şartlarda bu yöntemi kullanmaz eğer kullanılmasını istiyorsak bu işlemi kendimiz yapmak zorundayız.