La destrucción de
objetos en Java a.) La destrucción de los objetos Cuando un objeto no va a ser empleado, el lugar de
memoria de dinamica que emplea ha de ser liberado, asi
como los recursos que poseia, permitiendo al proyecto disponer de todos los recursos posibles. A esta accion se la da el nombre de destruccion del objeto. En Java la destrucción se puede hacer de manera automática o de manera personalizada, en función de las características del objeto. b.) La destrucción por defecto: Recogida de basura El interprete de Java posee un sistema de recogida de basura, que por lo comun faculta que no nos preocupemos de liberar la memoria asignada explicitamente. El recolector de basura sera el encargado de liberar una zona de memoria dinamica que habia sido reservada mediante el operador new,
cuando el objeto ya no va a ser utilizado mas mientras el proyecto (por ejemplo, sale del entorno de utilizacion, o no es referenciado nuevamente). El sistema de recogida de basura se ejecuta periódicamente, buscando
objetos que ya no estén referenciados. c.) La destrucción personalizada: finalize A veces una clase mantiene un medio que no es de Java
como un descriptor de
archivo o un tipo de letra del sistema de ventanas. En este
caso seria acertado el
utilizar la finalizacion explicita, para asegurar que dicho medio se libera. Esto se hace mediante la destruccion personalizada, un sistema parecida a los destructores de C++. Para especificar una destruccion personalizada se agrega un metodo a la clase con el nombre finalize: class ClaseFinalizada{ ClaseFinalizada() { // Constructor // Reserva del medio no Java o medio compartido } protected void finalize() { // Liberacion del medio no Java o medio compartido } } El interprete de Java llama al metodo finalize(), si tiene lugar cuando vaya a reclamar el lugar de ese objeto, mediante la recogida de basura. Debe observarse que el método finalize() es de tipo protected void y por lo tanto deberá de sobreescribirse con este mismo tipo.