Los finalizadores son métodos que vienen a completar la labor del garbage collector. Un
finalizador es un método que se llama automáticamente cuando se va a destruir un objeto (antes de
que la memoria sea liberada de modo automático por el sistema). Se utilizan para ciertas
operaciones de terminación distintas de liberar memoria (por ejemplo: cenar ficheros, cerrar
conexiones de red. liberar memoria reservada por funciones nativas, etc.).
Hay que tener en cuenta
que el garbage collector sólo libera la memoria reservada con new. Si por ejemplo se ha reservado
memoria con funciones nativas en C (por ejemplo, utilizando la función mallocQ), esta memoria
hay que liberarla explícitamente utilizando el método finalizeQ.
Un finalizador es un método de objeto (no static). sin valor de retomo (void). sin argumentos
y que siempre se llama finalizeQ. Los finalizadores se llaman de modo automático siempre que
hayan sido definidos por el programador de la clase. Para realizar su tarea correctamente, un
finalizador debería terminar siempre llamando al finalizador de su super-clase.
Tampoco se puede saber el momento preciso en que los finalizadores van a ser llamados. En
muchas ocasiones será conveniente que el programador realice esas operaciones de finalización de
modo explícito mediante otros métodos que él mismo llame.
El método System.runFinalizationf) "sugiere*' a la JVM que ejecute los finalizadores de los
objetos pendientes (que han perdido la referencia). Parece ser que para que este método se ejecute,
en Java 1.1 hay que llamar primero a gc() y luego a runFin alizationf).
No hay comentarios:
Publicar un comentario