Merhaba Arkadaslar,
Bir onceki yazimizda Java’daki Garbage Collection mekanizmasindan bahsetmistik. Bu yazimda ise bu mekanizma ile iliskili olan ve Object sinifinda bulunan finalize() metodundan bahsedecegim. Object sinifi Java’da sinif hiyerarsisinin tepesinde bulunmaktadir ve tum siniflar Object sinifini kalittigi icin her sinifin ornegi/instance’i bu finalize() metoduna sahip olacaktir.
Object sinifinda finalize metodunu inceledigimizde ;
protected void finalize() throws Throwable { }
seklinde tanimlandigini gorururuz. Ici bos oldugu icin ilgili Sinifta bu metodu override etmemiz gerekir.
- Garbage Collection mekanizmasi , Garbage Collector(GC) ile Heap’ten ilgili objeyi silmeden once, finalize() metodunu cagirir. Bunun bize ne gibi bir faydasi olabilir, obje silinmeden once yapmamiz gereken bir islem olabilir. Dosya kapatma islemi gibi bir islem olabilir veya silinmek uzere olan (eligible/uygun) objeyi silinmekten kurtarabiliriz (uneligible duruma getirebiliriz)
- finalize() metodu GC tarafindan sadece bir kez cagrilabilir.
- Eger GC bir objeyi silmeye karar verdiyse ve finalize() metodu kod icerisinden cagrilmadiysa, GC , finalize() metodunu cagirmayi garanti eder.
- Hatirlaycagimiz gibi GC her objeyi silmek gibi bir garanti saglamaz. Dolayisiyla finalize() metodu hic calismayabilir.