06.03.2015 Views

Java Kitabı

JAva`nın çalışma mantığıyla başlayıp basitten gelişmişe iyi bir kaynak

JAva`nın çalışma mantığıyla başlayıp basitten gelişmişe iyi bir kaynak

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

}<br />

System sınıfının statik bir yordamı olan gc(), çöp toplayıcısının kodu yazan kiĢi tarafından tetiklenmesini<br />

sağlar. Böylece çöp toplayıcısı, çöp haline gelmiĢ olan nesneleri (kullanılmayan nesneleri) bularak (eğer<br />

varsa) bellekten siler. Yukarıdaki uygulamamızı açıklamaya baĢlarsak; Ġlk for döngüsünde oluĢturulan<br />

Elma2 nesneleri, döngü bittiğinde çöp halini alacaklardır. Bunun sebebi, ilk for döngüsünün bitimiyle,<br />

oluĢturulan 10 adet Elma2 nesnesinin eriĢilemez bir duruma geleceğidir. Doğal olarak, eriĢilemeyen bu<br />

nesneler, çöp toplayıcısının iĢtahını kabartacaktır. Uygulamanın sonucu aĢağıdaki gibi olur; ()<br />

Not: Sonuç üzerindeki oklar ve diğer gösterimler, dikkat çekmek amacıyla, özel bir resim<br />

uygulaması tarafından yapılmıĢtır. ()<br />

System.gc() komutu ile çöp toplayıcısını tetiklediğimizde, gereksiz olan bu on adet Elma2 nesnesi<br />

bellekten silinecektir. Bu nesneler bellekten silinirken, bu nesnelere ait finalize() yordamlarının nasıl<br />

çağrıldıklarına dikkat çekmek isterim. ()<br />

3.2.2. Bellekten Hangi Nesneler Silinir?<br />

Çöp toplayıcısı bellekten, bir referansa bağlı olmayan nesneleri siler. Eğer bir nesne, bir veya daha fazla<br />

sayıdaki referansa bağlıysa, bu nesnemiz uygulama tarafında kullanılıyordur demektir ve çöp toplayıcısı<br />

tarafından bellekten silinmez. ()<br />

Örnek-3.19: CopNesne.java ()<br />

public class CopNesne {<br />

}<br />

public static void main(String args[]) {<br />

Elma e = new Elma(1);<br />

new Elma(2);<br />

System.gc() ; // çöp toplayıcısını çağırdık<br />

}<br />

64

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!