Fehlerbehebung ein java memory leak: Finalisierung?

Habe ich eine fehlerhafte Anwendung, die scheint zu lecken. Nach einer kurzen profiler Untersuchung, die meisten memory (80%) wird gehalten von java.lang.ref.Finalizer Instanzen. Ich vermute, dass Finalizer nicht ausgeführt werden.

Eine häufige Ursache scheint zu sein, Ausnahmen von den finalizer. Doch die javadoc für die finalize Methode der Object Klasse (siehe hier zum Beispiel) scheint dem zu widersprechen sich selbst: es besagt

Wenn eine nicht abgefangene exception geworfen wird, indem Sie die finalize-Methode, die Ausnahme wird ignoriert und die Fertigstellung dieses Objekts beendet.

aber später, es sagt auch, dass

Jede Ausnahme, die ausgelöst durch die finalize-Methode bewirkt, dass die Fertigstellung dieses Objekts angehalten werden, ist ansonsten aber ignoriert.

Was soll ich glauben (d.h., ist die Fertigstellung gestoppt oder nicht?), und haben Sie irgendwelche Tipps, wie Sie zu untersuchen, eine solche offensichtliche Undichtigkeiten?

Dank

Ich würde nicht sagen, dass beide JavaDoc Einträge zu widersprechen. Das zweite Zitat heißt es: für die aktuelle Instanz der Finalisierung beendet ist aber die Ausnahme wird ignoriert, dass andere Objekte können noch abgeschlossen werden.
Sehen Sie, welche Arten gehalten werden, durch diese Instanzen? Ist es nur einer begrenzten Gruppe von Klassen, oder ist es alles über Ihr Projekt?
Das Geheime Leben der Finalizer fasterj.com/articles/finalizer1.shtml,

InformationsquelleAutor Rom1 | 2011-10-04

Schreibe einen Kommentar