48. Which of the following is not a possible output of this code, assuming it runs to
completion?
package store;
public class Toy {
public void play() {
System.out.print("play-");
}
public void finalize() {
System.out.print("clean-");
}
public static void main(String[] args) {
Toy car = new Toy();
car.play();
System.gc();
Toy doll = new Toy();
doll.play();
}
}
A. play-
B. play-play-
C. play-play-clean-
D. play-play-clean-clean-
Bu sorunun benzerini görmüştük fakat orada finalizer methodu vardı şimdi burada finalize methodu var fakat cevapda biraz farklılık olabilir çünkü kodu çalıştırdığımızda belleği gereğince doldurmadıysak eğer iki play methodu da çalışacak B cevabı olabilir.(soruyu okuyun.) Sonra eğer ki bellek dolduğunda System.gc(); ile garbage collectoru toplamak için JVM'ye öneri yaptığımızda eğer çalıştırırsa car referansının nesnesini toplayıp finalize methodunu çalıştırabilir ve çıktıyı C şıkkındaki gibi alabiliriz yada en son artık bellek dolduğunda garbage collector çağrıldığında her iki nesneyi de silmek için finalize methodunu çağırabilir ve D şıkkındaki gibi bir çıktı alabiliriz ama A şıkkındaki mümkün değildir.