Dépannage java fuite de mémoire: la finalisation?

J'ai un comportement anormal de l'application qui semble fuite. Après une brève profiler enquête, plus de mémoire (80%) est détenue par java.lang.ref.Finalizer instances. Je soupçonne que les finaliseurs de ne pas s'exécuter.

Une cause fréquente de ce qui semble être des exceptions générées à partir de l'outil de finalisation. Cependant, la javadoc de la finalize méthode de la Object classe (voir ici par exemple) semble contredire lui-même: il affirme

Si un uncaught exception est levée par la méthode finalize, l'exception est ignoré et la finalisation de cet objet se termine.

mais plus tard, il stipule également que

Toute exception levée par la méthode finalize causes de la finalisation de cet objet d'être arrêtée, mais sinon ignorée.

Que dois-je croire (c'est à dire, est la finalisation interrompue ou pas?), et avez-vous des conseils sur la façon d'enquêter sur de tels apparente des fuites?

Grâce

  • Je ne dirais pas que les deux JavaDoc entrées contredire. La seconde citation états: de l'instance en cours de finalisation est terminée mais l'exception est ignorée d'autres objets peuvent encore être finalisé.
  • Voyez-vous quels types sont détenues par ces instances? Est-il seulement un ensemble limité de classes ou est-il au-dessus de votre projet?
  • La Vie Secrète De La Finaliseur fasterj.com/articles/finalizer1.shtml,
InformationsquelleAutor Rom1 | 2011-10-04