domingo, 28 de septiembre de 2008

Cómo llamar al recolector de basura JAVA

     He encontrado un árticulo muy bueno en (http://www.programacion.com/) que te comenta cosas 

tan olvidadas para los programadores de lenguajes como JAVA, en la que nos olvidamos de la 

destrucción de objetos, ya que el recolector de basura lo hace supuestamente por nosotros. 


Forzar la Finalización y la Recolección de Basura

El sistema de ejecución de Java realiza las tareas de manejo de memoria por tí. Cuando un programa ha terminado de utilizar un objeto-- esto es, cuando ya no hay más referencias a ese objeto- el objeto es finalizado y luego se recoge la basura.

Estas tareas suceden asíncronamente en segundo plano. Sin embargo, se puede forzar la finalización de un objeto y la recolección de basura utilizando los métodos apropiados de la clase System.

. Finalizar Objetos

Antes de recolectar la basura de un objeto, el sistema de ejecución de Java le da la oportunidad de limpiarse a sí mismo. Este paso es conocido como finalización y se consigue mediante una llamada al método finalize() del objeto. El objeto debe sobreescribir este método para realizar cualquier tarea de limpieza final como la liberación de recursos del sistema como ficheros o conexiones. Para más informaciónsobre el método finalize() puedes ver: Escribir un método finalize().

Se puede forzar que ocurra la finalización de un objeto llamando al método runFinalization() de la clase System.

System.runFinalization();

Este método llama a los métodos finalize() de todos los objetos que están esperando para ser recolectados.

. Ejecutar el Recolector de Basura

Se le puede pedir al recolector de basura que se ejecute en cualquier momento llamando al método gc() de la clase System.

System.gc();

Se podría querer ejecutar el recolector de basura para asegurarnos que lo hace en el mejor momento para el programa en lugar de hacerlo cuando le sea más conveniente al sistema de ejecución.

Por ejemplo, un programa podría desear ejecutar el recolector de basura antes de entrar en un cálculo o una sección de utilización de memoria extensiva, o cuando sepa que va a estar ocupado algun tiempo. El recolector de basura requiere unos 20 milisegundos para realizar su tarea, por eso un programa sólo debe ejecutarlo cuando no tenga ningún impacto en su programa -- esto es, que el programa anticipe que el recolector de basura va a tener tiempo suficiente para terminar su trabajo.

No hay comentarios: