Chiamata esplicita al metodo finalize () in Java

1

Stavo leggendo sul metodo finalize () che potrebbe essere invocato automaticamente quando un oggetto è idoneo per la garbage collection. Adesso è incerto. Ma cosa succede se lo chiamiamo in modo esplicito. Fa necessariamente una pulizia o è solo un normale chiamata Java?

    
posta user1369975 08.10.2016 - 10:13
fonte

1 risposta

5

Un metodo finalize() è un metodo come un altro. Fa tutto ciò che programmerai per fare. La particolarità di solo è che può essere chiamata in modo imprevedibile dalla JVM prima che un oggetto venga sottoposto a garbage collection. Se lo chiami manualmente, fa la stessa cosa che farebbe durante una chiamata innescata da GC.

Tuttavia, con tutti i moderni garbage collector, in pratica non è possibile fare affidamento su un oggetto che viene raccolto in un determinato momento o in realtà. Pertanto non è possibile utilizzare finalize() per garantire che venga eseguita un'azione, che limita strongmente l'utilità. (L'unica cosa che fa bene è il debug quando gli oggetti vengono raccolti, e la JVM ha opzioni migliori per questo.) Ecco perché il consiglio generale è "Ignora solo finalize() ".

    
risposta data 08.10.2016 - 10:50
fonte

Leggi altre domande sui tag