Dans mon application, je créé des objets "complexes" qui maintiennent ouvertes entre autres des connexions à des sockets. Je ne souhaite pas conserver ces connexion ouvertes durant toute la durée de la vie de l'application (qui peut être très longue) et je souhaiterais donc les fermer lorsque l'objet en question n'est plus utilisé. Or je ne peux pas connaitre à l'avance la durée de vie de mon objet. J'ai encapsulé mon objet dans une WeakReference afin qu'il soit nettoyé lorsqu'il n'est plus référencé mais j'aimerais être "notifié" à la destruction de l'objet pour piuvoir faire les nettoyages nécessaire et en particulier fermer les connexions.
Je sais qu'il n'est pas conseillé de surcharger la méthode finalize et j'ai sait également qu'il existe les PhantomReference qui permette ce genre de choses mais :
1- Peut on combiner Phantom et Weak reference ?
2- Je n'ai pas réussit à faire fonctionner les PhantomReference pour être systématiquement notifié à la destruction.

Quelqu'un aurait-il un cas d'utilisation pratique à me fournir ?