With finalizers you still have a reference to the original object after it has been marked as garbage. During the finalize invocation it is possible to make the object live again by passing it to some other non garbage object. Due to this possibility the garbage collector has to do another gc pass to see if the object in question can actually be disposed. If I understand it correctly this is the main cause of the performance impact.
When you use References and a ReferenceQueue you no longer have a reference to the disposed object. References that are removed from a ReferenceQueue will always return null when you call get. In other words there is no link to the original object that was refered to. This allows the garbage collector to free the object's memory as soon as it is marked as garbage instead of having to wait till after the finalizer has run. Brian Goetz explains it much better than I can at http://www.ibm.com/developerworks/library/j-jtp01274.html [Message sent by forum member 'pepijnve' (pepijnve)] http://forums.java.net/jive/thread.jspa?messageID=239758 =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff JAVA2D-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".