Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > ¿Los singleton pueden ser reciclados por el GC?

Hola, este es mi primer post en javahispano. No conozco mucho sobre classloader y garbage collector. El punto es que no he encontrado documentación donde se explique si un singleton al perder cualquier referencia a él puede ser reciclado por el GC. En algunos lugares encontré que esto podía ocurrir si se perdía referencia al classloader que lo había cargado. ¿Hay algún conocedor del tema? Esto aplicaría solo para Applicación servers? Muchas gracias.

octubre 23, 2012 | Unregistered CommenterRicardo R.

Cualquier objeto que no es referenciado por alguna variable de referencia es candidato a recolección por el GC. De todas maneras hay un problema conceptual en lo que planteas que no tiene que ver con el lenguaje de programación en el que lo implementes que es el siguiente: por definición de Singleton la aplicación no debería perder referencia a un Singleton durante todo el ciclo de vida de la aplicación.

noviembre 28, 2012 | Unregistered CommenterWaldemar

Buenas Ricardo, efectivamente un singleton mantiene una referencia estatica a su unica instancia y no deberia recolectarse. Sin embargo, como bien apuntas, es posible que la clase se haya cargado en un classloader determinado y que si este se desreferencia entonces se libere tambien el singleton. Efectivamente, en los llamados servlets containers se utilizan multiples classloaders que interactuan entre si y nada impide que en la implementacion interna del servidor en cierto momento se descarge un classloader.
En cualquier caso, que un singleton se recolecte no deberia suponer problema alguno, ya por definicion este tipo de componentes no deberia mantener estado.

Un saludo

noviembre 28, 2012 | Unregistered CommenterUnoPorAhi