Hola a todos, tengo Objetos que manejan ciertos recursos, y lo necesito lograr que se liberen esos recursos cuando "estos objetos" se destruyan.
He pensado en extender el metodo protected void finalize() throws Throwable"
Leyendo el el api, me parece que es lo indicado.
Pero aparentemente no logro el efecto deseado, por lo que realize la siguiente clase como "prueba de concepto".Código:protected void finalize() "Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. A subclass overrides the finalize method to dispose of system resources or to perform other cleanup." ...
Al ejecutar la clase no obtengo la salida "Finalize x".Código:package pruebas; public class Keyssi { public Keyssi() { X x = new X(); x = new X(); // Pierdo referencia anterior x = new X(); // Pierdo referencia anterior } public static void main(String[] args) { Keyssi keyssi1 = new Keyssi(); keyssi1 = new Keyssi(); // Pierdo referencia anterior keyssi1 = null; // Pierdo referencia anterior } class X { protected void finalize() throws Throwable{ System.out.println("Finalize x"); System.err.println("Finalize x"); super.finalize(); } } }
¿Alguien podría explicarme por que o como se logra la ejecución de codigo en un finalize()?
gracias de antemano.
Juanito
La solución completa para el hilo: aquí.



Citar
Marcadores