Tengo una clase java que usa campos estáticos complejos que requieren operaciones especiales como close()
para que GC los pueda limpiar de forma segura.Descargar campos estáticos
Para la inicialización de campos estáticos, uso el bloque static
. Pero ahora no sé cómo descargar el campo estático de forma segura, de modo que pueda llamar al método close()
antes de que GC limpie el campo.
¿Hay alguna forma de descargar un campo estático, similar al bloque de inicialización estático?
¿Ha considerado el uso de finalize()? –
Tengo. Pero por lo que sé, finalice los trabajos en objetos de clase, no en campos estáticos de esa clase. Entonces, finalizar no es una opción para mí. –
Tal vez usando un campo estático que contiene el número de referencias activas a objetos de esa clase (incrementado en el constructor, decrementado en finalize()) Y llamando close() o cualquier método de limpieza que tenga en esas estadísticas "complejas" cuando finalize () encuentra un recuento de ref de 0 después de la reducción, pero no lo he intentado. –