liberar memoria cuando no se necesite

milon
25 de Febrero del 2005
Hola, me gustaria saber si hay forma de liberar memoria desde un programa java. Mas o menos se en que punto de la aplicación se ocupa mas memoria (cuando dibujo graficas...), y seria interesante poder liberar algo justo despues.
Sabe alguien si puede hacerse esto?
Muchas gracias.

Lemony Snicket
25 de Febrero del 2005
Hola,...

En principio no es posible liberar memoria en JAVA de forma explícita, como se hace por ejemplo en C++. En JAVA existe el recolector de basura, que es una hebra o proceso de la máquina virtual con baja prioridad que sólo se ejecuta si no hay ninguna otra hebra de prioridad superior ejecutándose y que elimina aquellos objetos susceptibles de ser recolectados -aquellos que no tienen referencias activas (distintas de null) y que se consideran fuera de uso. La llamada a System.gc() o Runtime.gc() no permite conocer cuándo se ejecuta el recolector de basura por el tema de las prioridades de las hebras, de modo que lo máximo que se puede hacer es convertir los objetos que no nos interesen en "elegibles" (referencias a null) para que el recolector de basura los elimine la próxima vez que se ejecute evitando así las "memory leaks" (fugas de memoria).

Espero que te sirva. Un saludo.