J'ai été confronté à un problème de mémoire (Occupation cumulative de la mémoire jusqu'a HeapStack).

Schématiquement mes composants n'étaient pas ramassés car des références persistaient dans des ArrayList,
ou des class de service étaient référencées dans des PropertyChangeListener.

Bref après analyse du code et utilisation de jconsole et MAP je me suis résolus à coder un mécanisme de déréférencement des composants et des class de services.

J'ai implémenté une méthode dispose() pour tous ces objets ainsi que la méthode finalize().

Les méthodes dispose() sont appelés en cascade et de manière hiérarchique.
Les Méthodes finalize() moucharde la destruction réelle des objets lors du déclenchement du Gc.

Questions :
Est-ce la bonne solution ?
Avez-vous été confronté à ce type de problème ?
Comment l'avez vous résolus ?
J'utilise 2 polices avec une dizaine de taille celles-ci prennent environ 1Mo de mémoire soit 45% de la mémoire disponible initialement. peut-on réduire cette occupation ?

Merci de vos réponses.