This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
If you override the finalize method and some how save the object from being garbage collected ( eg: you save the reference to that object ) then the object will not be garbage collected. Once an object is garbage collected it cannot be reached because it has been removed from memory. An object is GC ed only when no reference can reach it , or when an island of isolation occurs.
finalize() method will be called only once in the life time of an object. So even if you override the finalize method and save the object from being garbage collected, finalize() will not be called when it's again eligible for GC.